Системный вызов creat

Прототип системного вызова

#include <fcntl.h>

int creat(char *path, int mode);

Описание системного вызова

Системный вызов creat эквивалентен системному вызову open() с параметром flags, установленным в значение O_CREAT | O_WRONLY | O_TRUNC.

Параметр path является указателем на строку, содержащую полное или относительное имя файла.

Если файл с указанным именем не существовал к моменту системного вызова, то он будет создан и открыт только для выполнения операций записи. Если файл уже существовал, то он открывается также только для операции записи, при этом его длина уменьшается до 0 с одновременным сохранением всех других атрибутов файла.

Параметр mode устанавливает атрибуты прав доступа различных категорий пользователей к новому файлу при его создании. Этот параметр задается как сумма следующих восьмеричных значений:

0400  - Разрешено чтение для пользователя, создавшего файл.
0200  - Разрешена запись для пользователя, создавшего файл.
0100  - Разрешено исполнение для пользователя, создавшего файл.
0040  - Разрешено чтение для группы пользователя, создавшего файл.
0020  - Разрешена запись для группы пользователя, создавшего файл.
0010  - Разрешено исполнение для группы пользователя, создавшего файл.
0004  - Разрешено чтение для всех остальных пользователей
0002  - Разрешена запись для всех остальных пользователей
0001  - Разрешено исполнение для всех остальных пользователей

При создании файла реально устанавливаемые права доступа получаются из стандартной комбинации параметра mode и маски создания файлов текущего процесса umask, а именно - они равны mode & ~umask.

Возвращаемое значение

Системный вызов возвращает значение файлового дескриптора для открытого файла при нормальном завершении и значение -1 при возникновении ошибки.