| Сервер поддерживается Центром Информационных Технологий (095) 932-9212, 932-9213, 939-0783 E-mail: info@citforum.ru

Сервер содержит море(!) аналитической информации | CIT Forum CD-ROM

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

Comments: info@citmgu.ru Designed by Andrey Novikov Copyright © CIT