|
open открывает файл (устройство, канал) с именем fname (имя может включать в себя маршрут) и устанавливает флаги статуса файла в соответствии со значением параметра flag. Необязательный параметр mode задает режим доступа к указанному файлу (см. chmod).
Значение параметра flag может задаваться как логическое ИЛИ следующих значений, определенных во включаемом файле:
O_RDONLY |
|
Открыть только на чтение. |
O_WRONLY |
|
Открыть только на запись. |
O_RDWR |
|
Открыть на чтение/запись. |
O_NDELAY |
|
Этот флаг может воздействовать на последующие операции чтения и записи (см. read и write).
При открытии именованного канала с установленными флагами O_RDONLY или O_WRONLY:
- Если установлен флаг O_NDELAY, то вызов open только на чтение завершается без задержки, а вызов open только для записи отрабатывает с сообщением об ошибке, если в данный момент нет процесса, открывшего файл для чтения;
- Если не установлен флаг O_NDELAY, то вызов open только на чтение блокируется, пока какой-либо процесс не откроет файл для записи, а вызов open только на запись блокируется, пока какой либо процесс не откроет файл на чтение.
При открытии файла, ассоциированного с линией связи:
- Если установлен флаг O_NDELAY, то вызов open завершается без ожидания несущей.
- Если не установлен флаг O_NDELAY, то вызов open блокируется до появления несущей.
|
O_APPEND |
|
Перед каждой операцией записи устанавливать указатель текущей позиции на конец файла. |
O_SYNC |
|
При открытии обычного файла этот флаг воздействует на последующие операции записи. Если флаг установлен, то каждый вызов write ожидает физического обновления как данных, так и статуса файла. |
O_CREAT |
|
Если файл существует, то флаг игнорируется. В противном случае идентификаторы владельца и группы создаваемого файла устанавливаются равными, соответственно, действующим идентификаторам пользователя и группы процесса, а младшие 12 бит значения режима доступа к файлу устанавливаются равными значению аргумента mode, модифицированному следующим образом (см. creat):
- Биты, соответствующие единичным битам маски режима создания файлов текущего процесса (см. umask), устанавливаются равными 0.
- Бит навязчивости (см. chmod) устанавливается равным 0.
|
O_TRUNC |
|
Если файл существует, то он опустошается (размер становится равным 0), а режим доступа и владелец не изменяются. |
O_EXCL |
|
Если установлены оба флага O_EXCL и O_CREAT, то системный вызов open завершается неудачей, если файл уже существует. |
|