sopenfd()

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

Прототип:

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

Аргументы:

fd
Файловый дескриптор, ассоциированный с файлом.
oflag
Комбинация флагов, определяющих статус и режим открытия файла (битовые константы определены в <fcntl.h>):
O_RDONLY
открытие только для чтения.
O_WRONLY
открытие только для записи.
O_RDWR
открытие для чтения и записи.
O_APPEND
открытие для дополнения.
O_CREAT
создать файл, если он не существует (игнорируется, если файл уже создан).
O_TRUNC
обнуление размера существующего файла (игнорируется, если файл не существует).
sflag
Режим совместного доступа к файлу (комбинация битов, описанных в <share.h>):
SH_COMPAT
режим совместимости.
SH_DENYRW
предотвращает чтение или запись в файл.
SH_DENYWR
предотвращает запись в файл.
SH_DENYRD
предотвращает чтение файла.
SH_DENYNO
разрешает чтение и запись в файл.

Библиотека:

libc

Описание:

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

Обратите внимание, что:

openfd( fd, oflag );

эквивалентно следующему:

sopenfd( fd, oflag, SH_DENYNO );

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

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

Коды ошибок:

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

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

Unix

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

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

openfd()




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