Теория и практика программирования на Си в Unix

       

Макросы, связанные с потоками


Наиболее интересны два макроса, связанные с потоками :
- получение текущей позиции

int xdr_getpos(xdr_handle)
XDR *xdr_handle; /* handle */
Этот макрос возвращает целое число, указывающее на текущую позицию в потоке.

- позиционирование в потоке

bool_t xdr_setpos(xdr_handle, pos)
XDR *xdr_handle; /* handle */
int pos; /* позиция в потоке */

Этот макрос возвращает TRUE, если позиционирование возможно. С помощью этих макросов можно определить число байтов, требующееся для хранения данных XDR.

ПРОГРАММА 48

/*вычисление числа байтов пpи кодиpовании XDR */ #include <stdoi.h> #include <rpc/rpc.h>

main() { XDR xdrs; /*дескpиптоp XDR */ int pos1, pos2; /*позиции */

/*позиция пеpед кодиpованием xdr */ pos1 = xdr_getpos(&xdrs); /*кодиpование xdr */ .............. /* позиция после кодиpования xdr */ pos2 = xdr_getpos(&xdrs); print("nombre octets dans le flot XDR %d/n", pos2-pos1); }



Содержание раздела