Как получить указатель FILE из файлового дескриптора?

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

Ответ 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-стандарте нечего сказать о дескрипторах файлов. Ваша конкретная платформа может или не может обеспечить такой механизм.