Программирование на C и C++

Онлайн справочник программиста на C и C++

creat, _rtl_creat, creatnew, creattemp

int creat(const char *filename, int pmode)

int _rtl_creat(const char *filename, int attrib)

int creatnew(const char *filename, int attrib)

int creattemp(char *filename, int attrib)

Прототип: 
Описание: 

Функция creat() является частью UNlX-подобной системы и не определена в стандарте ANSI С. Она создает новый файл с именем, указанным аргументом filename, и открывает этот файл для записи. В случае успеха creat() возвращает неотрицательный дескриптор файла; в противном слу­чае функция возвращает —1. (Дескрипторы файлов являются целочисленными и не относятся к потокам или указателям на файлы.)

Значение pmode определяет установку доступа к файлу, иногда называемую его режимом досту­па (permission mode). Значение pmode может меняться в зависимости от среды исполнения. Для Borland С++ его значениями могут быть S_IWRITE и S_IREAD. Если pmode установлен в S_IREAD, то создается файл, доступный только по чтению. Если же он установлен в S_IWRITE, то создается файл, доступный по записи. Можно объединить эти значения, воспользовавшись операцией ИЛИ и создать файл с доступом по чтению/записи.

Если в момент обращения к creat() указанный файл уже существует, то, если он не был защи­щен от записи, он будет стерт, и все его содержимое будет потеряно.

Функция rtl_creat() работает так же, как и creat(), но использует атрибутивный байт. В качестве аргумента attrib используется один из следующих макросов:

FA_RDONLY Устанавливает файл в режим «только чтение»
FA_HIDDEN Создает скрытый файл
FA_SYSTEM Помечает как системный файл

Функция creatnew() такая же, как _rtl_creat(), за исключением того, что, если на диске такой файл уже существует, она возвращает ошибку и не стирает существующий файл.

Функция creattemp() используется для создания временного уникального файла. Файл creattemp() вызывается с аргументом filename, указывающим маршрут и имя файла и заканчивающимся об­ратным слэшем. По возвращении filename содержит имя уникального файла. Необходимо прове­рить, хватит ли места в filename для того, чтобы вместить имя файла.

В случае ошибки в любой из этих функций errno устанавливается в одно из следующих значений:

ENOENT Путь или файл не существуют
EMFILE Открыто слишком много файлов
EACCESS Доступ запрещен
EEXIST Файл существует (только для creatnew())

 

Пример: