Как получить указатель FILE из файлового дескриптора? - PullRequest
74 голосов
/ 21 декабря 2009

Я играю с mkstemp(), который предоставляет дескриптор файла, но я хочу сгенерировать форматированный вывод с помощью fprintf(). Существует ли простой способ преобразования дескриптора файла, предоставляемого mkstemp(), в структуру FILE *, которая подходит для использования с fprintf()?

Ответы [ 3 ]

91 голосов
/ 21 декабря 2009

Использование fdopen():

FILE* fp = fdopen(fd, "w");
26 голосов
/ 21 декабря 2009

FILE* f = fdopen(d, "w");

вывод man fdopen:

СИНТАКСИС

#include <stdio.h>

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

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

0 голосов
/ 21 декабря 2009

Нет стандартного способа сделать это (или наоборот), так как стандарт C не имеет ничего общего с дескрипторами файлов. Ваша конкретная платформа может или не может обеспечить такой механизм.

...