问题
I'm playing around with mkstemp()
, which provides a file descriptor, but I want to generate formatted output via fprintf()
. Is there an easy way to transform the file descriptor provided by mkstemp()
into a FILE *
structure that is suitable for use with fprintf()
?
回答1:
Use fdopen():
FILE* fp = fdopen(fd, "w");
回答2:
FILE* f = fdopen(d, "w");
man fdopen output:
SYNOPSIS
#include <stdio.h>
FILE *
fdopen(int fildes, const char *mode);
The
fdopen()
function associates a stream with the existing file descriptor,fildes
. The mode of the stream must be compatible with the mode of the file descriptor. When the stream is closed viafclose(3)
,fildes
is closed also.
回答3:
There is no standard way of doing this (or the reverse) as the C Standard has nothing to say about file descriptors. Your specific platform may or may not provide such a mechanism.
来源:https://stackoverflow.com/questions/1941464/how-to-get-a-file-pointer-from-a-file-descriptor