fdopen()

Связать поток с файловым дескриптором

Прототип:

#include <stdio.h>
FILE * fdopen( int filedes,
const char *mode );

Аргументы:

filedes
Файловый дескриптор, который необходимо связать с потоком.
mode
Режим, указанный при первоначальном открытии filedes. Для дополнительной информации смотрите fopen(), за исключением режимов, начинающихся с w, которые не усекают файл.

Библиотека:

libc

Описание:

Функция fdopen() связывает поток с файловым дескриптором filedes, который представляет открытый файл или устройство.

Аргумент filedes является файловым дескриптором, который возвращается одной из функций accept(), creat(), dup(), dup2(), fcntl(), open(), pipe() или sopen().

Функция fdopen() сохраняет максимальное смещение, установленное ранее для открытого файлового дескриптора filedes.

Возвращаемое значение:

Файловый поток. Если возникла ошибка, функция возвращает NULL, код ошибки записывается в errno.

Коды ошибок:

EBADF
Аргумент filedes не является корректным файловым дескриптором.
EINVAL
Аргумент mode не является корректным режимом.
EMFILE
Процесс использует слишком много файловых дескрипторов в текущий момент.
ENOMEM
Недостаточно памяти для структуры FILE.

Примеры:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>
int main( void )
{
int filedes;
FILE *fp;
filedes = open( "file", O_RDONLY );
if ( filedes != -1 )
{
fp = fdopen( filedes, "r" );
if ( fp != NULL )
{
/* Also closes the underlying FD, filedes. */
fclose( fp );
}
}
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1

Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

creat(), dup(), dup2(), errno, fcntl(), fopen(), freopen(), open(), pipe(), sopen()




Предыдущий раздел: Описание API системной библиотеки