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 присваивается код ошибки.