fileno приведение FILE к дескриптору C

Есть ли способ привести переменную типа int (файловый дескриптор) к типу FILE в C? У меня есть открытый канал fd, и я хочу использовать функции, которые ожидают FILE.


person user1944224    schedule 19.02.2013    source источник


Ответы (2)


Вы не можете использовать его, но можете вызвать fdopen(3), который делает именно то, что вы хотеть:

FILE *
fdopen(int fildes, const char *mode);

Функция fdopen() связывает поток с существующим файловым дескриптором fildes. Режим потока должен быть совместим с режимом дескриптора файла. Когда поток закрывается через fclose(3), fildes также закрывается.

person Carl Norum    schedule 19.02.2013
comment
Спасибо, Карл, так будет ли fdopen в конечном итоге выполнять какие-либо системные вызовы для fd или просто вернет поток FILE? - person user1944224; 20.02.2013
comment
@ user1944224, это, вероятно, зависит от реализации. - person Carl Norum; 20.02.2013

В системах POSIX вы можете использовать fdopen для создания FILE *, ссылающегося на дескриптор файла.

person Samuel Edwin Ward    schedule 19.02.2013