Я играю с mkstemp(), который предоставляет файловый дескриптор, но я хочу сгенерировать отформатированный вывод через fprintf(). Есть ли простой способ преобразовать дескриптор файла, предоставленный mkstemp() в структуру FILE *, которая подходит для использования с fprintf()?
Как получить указатель FILE из файлового дескриптора?
Ответ 1
Используйте fdopen()
:
FILE* fp = fdopen(fd, "w");
Ответ 2
FILE* f = fdopen(d, "w");
man fdopen output:
СИНТАКСИС
#include <stdio.h>
FILE *
fdopen(int fildes, const char *mode);
Функция
fdopen()
связывает поток с существующим файловым дескриптором,fildes
. Режим потока должен быть совместим с режимом дескриптора файла. Когда поток закрыт черезfclose(3)
, также закрываетсяfildes
.
Ответ 3
Нет стандартного способа сделать это (или наоборот), поскольку в C-стандарте нечего сказать о дескрипторах файлов. Ваша конкретная платформа может или не может обеспечить такой механизм.