При создании файла предполагается, что
При создании файла предполагается, что в качестве третьего аргумента типа mode_t задается режим доступа.
O_EXCL
Если установлены флаги O_CREAT и O_EXCL, а файл существует (хотя бы и в виде символьной ссылки на несуществующий файл), вызов open() завершится неудачей. Проверка существования файла и его создание представляют собой атомарное действие по отношению к попыткам других процессов (потоков управления) выполнить аналогичный запрос.
O_TRUNC
Если файл существует, является обычным и успешно открывается с флагами O_RDWR или O_WRONLY, он опустошается (размер устанавливается равным нулю).
Отметим, что рассмотренная ранее функция creat (path, mode) по определению эквивалентна вызову open (path, O_WRONLY | O_CREAT | O_TRUNC, mode).
Следующий флаг относится к асинхронному вводу/выводу.
O_NONBLOCK
Обычно, если канал открывается только на чтение (или только на запись), процесс (поток управления) блокируется, пока этот же канал не откроют на запись (чтение). При установленном флаге O_NONBLOCK открытие на чтение завершается без задержки, а открытие на запись заканчивается неудачей, если канал еще не открыт кем-либо на чтение.
При открытии специального файла вызов open() завершается только после того, как устройство оказывается в состоянии готовности. Флаг O_NONBLOCK отменяет эту задержку, однако последующее поведе- ние устройства зависит от реализации.
Следующая группа флагов обслуживает синхронизированный ввод/вывод.
O_DSYNC
Операции записи с возвращаемым файловым дескриптором должны завершаться с обеспечением целостности данных.
O_SYNC
Операции записи должны завершаться с обеспечением целостности файла.
O_RSYNC
Операции чтения должны завершаться на уровне целостности, заданном флагами O_DSYNC или O_SYNC.
Смысл последнего из стандартизованных флагов будет пояснен при рассмотрении процессов.
O_NOCTTY
Если открывается специальный файл, соответствующий терминалу, последний не должен становиться управляющим терминалом процесса. Для создания и открытия канала предназначена функция pipe().
Содержание Назад Вперед