openfd()

Открыть для приватного доступа файл, связанный с заданным файловым дескриптором

Прототип:

#include <unistd.h>
int openfd( int fd,
int oflag );

Аргументы:

fd
Файловый дескриптор, связанный с файлом, который необходимо открыть.
oflag
Параметры открытия файла, комбинация следующих опций:
O_RDONLY
Открыть файл только для чтения.
O_WRONLY
Открыть файл только для записи.
O_RDWR
Открыть файл для чтения/записи.
O_APPEND
Открыть файл для добавления записей в конец.
O_TRUNC
Очистить файл, уменьшив его длину до 0.

Библиотека:

libc

Описание:

Функция openfd() открывает файл, связанный с файловым дескриптором fd. Функция работает почти так же, как dup(), за исключение того, что новый файловый дескриптор имеет собственный режим доступа и смещение. Режим доступа, определяемый параметром oflag, должен быть равным либо более ограниченным в сравнении с режимом доступа fd.

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

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

Коды ошибок:

EBADF
Некорректный файловый дескриптор fd.
EACCES
Режим доступа oflag не совпадает или менее ограничен чем у fd.
EBUSY
Режим совместного доступа (sflag) отклонён из-за конфликтующего открытия (подробнее в описании sopenfd()).

Примеры:

#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>
int main ( void )
{
int fd, fd2, oflag;
fd = open( "/etc/passwd", O_RDONLY );
fd2 = openfd( fd, O_RDONLY );
return (EXIT_SUCCESS);
}

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

ЗОСРВ «Нейтрино»

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

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

dup(), sopenfd()




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