How to get a FILE pointer from a file descriptor?

2019-01-21 03:51发布

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()?

标签: c posix mkstemp
3条回答
乱世女痞
2楼-- · 2019-01-21 04:11

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 via fclose(3), fildes is closed also.

查看更多
我命由我不由天
3楼-- · 2019-01-21 04:24

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.

查看更多
时光不老,我们不散
4楼-- · 2019-01-21 04:34

Use fdopen():

FILE* fp = fdopen(fd, "w");
查看更多
登录 后发表回答