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


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

3 69

3 ответа:

использовать fdopen():

FILE* fp = fdopen(fd, "w");

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

man fdopen выход:

справка

#include <stdio.h>

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

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

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