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