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

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

79
задан Francesco Boi 4 March 2019 в 12:31
поделиться

3 ответа

Используйте fdopen () :

FILE* fp = fdopen(fd, "w");
95
ответ дан 24 November 2019 в 10:17
поделиться

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

-7
ответ дан 24 November 2019 в 10:17
поделиться

ФАЙЛ * f = fdopen (d, "w");

man fdopen output:

SYNOPSIS

#include <stdio.h>

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

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

27
ответ дан 24 November 2019 в 10:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: