Есть ли способ привести переменную типа int (файловый дескриптор) к типу FILE в C? У меня есть открытый канал fd, и я хочу использовать функции, которые ожидают FILE.
fileno приведение FILE к дескриптору C
Ответы (2)
Вы не можете использовать его, но можете вызвать fdopen(3)
, который делает именно то, что вы хотеть:
FILE * fdopen(int fildes, const char *mode);
Функция
fdopen()
связывает поток с существующим файловым дескриптором fildes. Режим потока должен быть совместим с режимом дескриптора файла. Когда поток закрывается черезfclose(3)
, fildes также закрывается.
person
Carl Norum
schedule
19.02.2013
Спасибо, Карл, так будет ли fdopen в конечном итоге выполнять какие-либо системные вызовы для fd или просто вернет поток FILE?
- person user1944224; 20.02.2013
@ user1944224, это, вероятно, зависит от реализации.
- person Carl Norum; 20.02.2013
В системах POSIX вы можете использовать fdopen
для создания FILE *
, ссылающегося на дескриптор файла.
person
Samuel Edwin Ward
schedule
19.02.2013