Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get a FILE* stream from a file descriptor?

Tags:

c

file

linux

We can get a file descriptor from a FILE* stream by using the fileno() function. Is there a function for getting a FILE* stream from the file descriptor without reopening the file?

like image 839
Rohit Banga Avatar asked Oct 04 '09 16:10

Rohit Banga


1 Answers

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

See fdopen(3), but it should be on the same page as fopen(3):

The fdopen() function associates a stream with the existing file descriptor, fd. The mode of the stream (one of the values "r", "r+", "w", "w+", "a", "a+") must be compatible with the mode of the file descriptor. The file position indicator of the new stream is set to that belonging to fd, and the error and end-of-file indicators are cleared. Modes "w" or "w+" do not cause truncation of the file. The file descriptor is not dup’ed, and will be closed when the stream created by fdopen() is closed. The result of applying fdopen() to a shared memory object is undefined.

like image 152
DigitalRoss Avatar answered Sep 27 '22 23:09

DigitalRoss