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