Программирование на C и C++

Онлайн справочник программиста на C и C++

sopen

int sopen(const char *filename, int access, int shflag, int mode)

Прототип: 
Описание: 

Макрос sopen() является частью UNIX-подобной фай­ловой системы. Макрос sopen() открывает файл для совместного доступа при работе в сетях. Он определяется следующим образом:

open(filename,(access | shflag), mode)

Макрос sopen() открывает файл с именем filename и устанавливает режим доступа к нему в соответствии со значением access, а режим совместного использования — в соответствии с shflag. Аргумент access состоит из двух частей: базового режима работы и модификатора. Допускаются следующие базовые режимы работы:

Base Значение
O_RDONLY Открыть только для чтения
O_WRONLY Открыть только для записи
O_RDWR Открыть для чтения и записи

Выбрав одно из этих значений, можно объединить, используя ИЛИ, с одним или большим количеством следующих модификаторов:

Модификатор Значение в установленном положении
O_NDELAY Не используется, включен для совместимости с UNIX
O_APPEND Перемещает указатель положения в файле в конец файла перед каждой операцией считывания
O_CREAT Если файл не существует, он создается с атрибутами, установленными в соответствии со значением mode
O_TRUNC Если файл существует, он урезается до длины 0, но сохраняет свои атрибуты файла O_EXCL При использовании совместно с O_CREAT не будет создавать файл для вывода, если файл с таким именем уже существует
O_NOINHERIT Указанный файл не наследуется другими программами
O_BINARY Открывает двоичный файл
O_ТЕХТ Открывает текстовый файл

Аргумент shflag определяет вид совместного использования открываемого файла и может при­нимать одно из следующих значений:

shflag Значение
SH_COMPAT Режим совместимости
SH_DENYRW Запрет чтения и записи
SH_DENYWR Запрет записи
SH_DENYRD Запрет чтения
SH_DENYNONE Разрешение чтения/записи
SH_DENYNO Разрешение чтения/записи

Аргумент mode нужен только тогда, когда используется модификатор O_CREAT. В этом случае mode может иметь одно из следующих значений:

Mode Значение
S_IWRITE Доступ для записи
S_IREAD Доступ для чтения
S_IWRITE | S_IREAD Доступ для чтения /записи

При успешном вызове sopen() возвращает положительное целое, являющееся дескриптором от­крытого файла. Возврат —1 означает, что файл не может быть открыт. В этом случае errno уста­навливается в одно из следующих значений:

ENODENT Файл не существует
EMFILE Открыто слишком много файлов
EACCESS Доступ запрещен
EINVACC Недействительный код доступа

 

Пример: