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()) |