Открыть для общего доступа файл, связанный с файловым дескриптором
#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 системной библиотеки