open (2)
   открытие файла  

Синтаксис
 
    #include <fcntl.h>

    int open (char *fname, int flag[, int mode]);

Описание
  open открывает файл (устройство, канал) с именем fname (имя может включать в себя маршрут) и устанавливает флаги статуса файла в соответствии со значением параметра flag. Необязательный параметр mode задает режим доступа к указанному файлу (см. chmod).

Значение параметра flag может задаваться как логическое ИЛИ следующих значений, определенных во включаемом файле:
O_RDONLY
  Открыть только на чтение.
O_WRONLY
  Открыть только на запись.
O_RDWR
  Открыть на чтение/запись.
O_NDELAY
  Этот флаг может воздействовать на последующие операции чтения и записи (см. read и write).

При открытии именованного канала с установленными флагами O_RDONLY или O_WRONLY:

  1. Если установлен флаг O_NDELAY, то вызов open только на чтение завершается без задержки, а вызов open только для записи отрабатывает с сообщением об ошибке, если в данный момент нет процесса, открывшего файл для чтения;
  2. Если не установлен флаг O_NDELAY, то вызов open только на чтение блокируется, пока какой-либо процесс не откроет файл для записи, а вызов open только на запись блокируется, пока какой либо процесс не откроет файл на чтение.
При открытии файла, ассоциированного с линией связи:
  1. Если установлен флаг O_NDELAY, то вызов open завершается без ожидания несущей.
  2. Если не установлен флаг O_NDELAY, то вызов open блокируется до появления несущей.
O_APPEND
  Перед каждой операцией записи устанавливать указатель текущей позиции на конец файла.
O_SYNC
  При открытии обычного файла этот флаг воздействует на последующие операции записи. Если флаг установлен, то каждый вызов write ожидает физического обновления как данных, так и статуса файла.
O_CREAT
  Если файл существует, то флаг игнорируется. В противном случае идентификаторы владельца и группы создаваемого файла устанавливаются равными, соответственно, действующим идентификаторам пользователя и группы процесса, а младшие 12 бит значения режима доступа к файлу устанавливаются равными значению аргумента mode, модифицированному следующим образом (см. creat):
  1. Биты, соответствующие единичным битам маски режима создания файлов текущего процесса (см. umask), устанавливаются равными 0.
  2. Бит навязчивости (см. chmod) устанавливается равным 0.
O_TRUNC
  Если файл существует, то он опустошается (размер становится равным 0), а режим доступа и владелец не изменяются.
O_EXCL
  Если установлены оба флага O_EXCL и O_CREAT, то системный вызов open завершается неудачей, если файл уже существует.

Возвращаемое значение
  При нормальном выполнении open возвращает файловый дескриптор, который далее идентифицирует открытый файл во всех операциях над ним.

При ошибках выполнения open возвращает -1 и устанавливает errno.

См.также
  chmod, close, creat, read, write, umask


Список системных вызовов