CREAT(2)
CREAT(2)
НАЗВАНИЕ
creat - создание нового или опустошение существующего файла
СИНТАКСИС
int creat (path, mode) char *path; int mode;
ОПИСАНИЕ
Системный вызов creat создает новый обычный файл или готовит для перезаписи существующий файл с маршрутным именем, адрес которого содержит аргумент path.
Если файл существует, то он опустошается (размер становится равным 0), а режим доступа и владелец не изменяются. Если файл не существует, то идентификаторы владельца и группы создаваемого файла устанавливаются равными, соответственно, действующим идентификаторам пользователя и группы процесса, а младшие 12 бит значения режима доступа файла устанавливаются равными значению аргумента mode, модифицированному следующим образом:
- Обнуляются биты, соответствующие единичным битам маски режима создания файлов текущего процесса [см. ].
- Бит навязчивости [см. ] обнуляется.
В случае успешного завершения системного вызова возвращается дескриптор файла, открытого только на запись, даже если режим доступа к файлу не разрешает запись. Указатель текущей позиции устанавливается на начало файла. Дескриптор файла создается таким, чтобы после выполнения системных вызовов файл оставался открытым [см. ]. Процесс может иметь открытыми одновременно не более 20 файлов. Новый файл может быть создан с режимом доступа, запрещающим запись.
Системный вызов creat завершается неудачей, если выполнено хотя бы одно из следующих условий:
[ENOTDIR] Компонент маршрута не является каталогом. [ENOENT] Компонент маршрута не существует. [EACCES] Для компонента маршрута отсутствует право на поиск. [ENOENT] Маршрутное имя пусто. [EACCES] Создание файла требует записи в каталог, права на запись в который нет. [EROFS] Файл расположен или должен быть расположен в файловой системе, доступной только на чтение. [ETXTBSY] Файл содержит разделяемую секцию команд, которая в данный момент выполняется. [EACCES] Файл существует и запись в него запрещена. [EISDIR] Файл существует и является каталогом. [EMFILE] Превышается максимально допустимое количество файлов, открытых одновременно в одном процессе. [EFAULT] Аргумент path указывает за пределы отведенного процессу адресного пространства. [ENFILE] Переполнение системной таблицы файлов. [EAGAIN] Файл существует и доступ к нему заблокирован [см. ]. [EINTR] Во время выполнения системного вызова перехвачен сигнал. [ENOLINK] Маршрутное имя path указывает на удаленный компьютер, связи с которым в данный момент нет. [EMULTIHOP] Компоненты path требуют многократного обращения к удаленным компьютерам. [ENOSPC] Нет свободных описателей файлов.
СМ. ТАКЖЕ
, , , , , , , , .
ДИАГНОСТИКА
При успешном завершении результат равен неотрицательному целому числу - дескриптору файла; в случае ошибки возвращается -1, а переменной errno присваивается код ошибки.