CodeNet / Языки программирования / C / C++ / Руководства и справочные материалы по C/C++ / Справочники по функциям / Справочник по функциям C/C++
open
open
Функция Открывает файл для чтения или записи. Синтаксис #include <fcntl.h> #include <sys\stat.h> int open(const char *filename, int access [, unsigned mode]); Файл, содержащий io.h прототип Описание Функция open открывает файл, имя которого определено параметром filename, и подготавливает его к последующим операциям чтения и/или записи, в зависимости от параметра access. Для создания файла в обычном режиме, вы можете присвоить соответствующее значение _fmode, или при открытии файла указать опции O_CREAT и O_TRUNC связанные операцией побитового логического сложения (OR) с необходимым режимом передачи. К примеру: open("xmp",O_CREAT|O_TRUNC|O_BINARY,S_IREAD); создает двоичный файл с атрибутом только для чтения с именем XMP, причем, если он уже существует, то он обрезается до нулевой длины. Для функции open параметр access конструируется путем логического побитового сложения флагов, перечисленных в двух следующих списках. Из первого списка может быть использован только один флаг; остальные флаги могут применяться в любых логических комбинациях. Список 1: флаги чтения/записи. O_RDONLY открытие только для чтения. O_WRONLY открытие только для записи. O_RDWR открытие для чтения и записи. Список 2: остальные флаги доступа. O_NDELAY Не используется; для совместимости с системой UNIX. O_APPEND Если флажок установлен, то перед каждой операцией записи, указатель файла бу- дет устанавливаться на конец файла. O_CREAT Если файл существует, этот флажок не имеет никакого значения. Если файл не существует, он будет создан, и биты из аргумента mode будут использованы для установки битов-атрибутов файла, как и в функции chmod. O_TRUNC Если файл существует, его длина усека- ется до 0. Атрибуты файла остаются не- изменными. O_EXCL Используется только вместе с O_CREAT. Если файл уже существует, то происходит возврат по ошибке. O_BINARY Данный флаг может быть установлен для гарантированного открытия файла в двоичном режиме. O_TEXT Данный флаг может быть установлен для гарантированного открытия файла в текс- товом режиме. Эти константы (O_...) определены в файле fcntl.h. Если ни O_BINARY, ни O_TEXT не указаны, файл открывается в режиме трансляции, соответственно глобальной переменной _fmode. Если в построении параметра access участвует флаг O_CREAT, вам необходимо указать аргумент mode из следующих символических констант, определенных в файле sys\stat.h. -------------------------------------------------- Значение параметра Возможности доступа mode -------------------------------------------------- S_IWRITE Разрешение на запись. S_IREAD Разрешение на чтение. S_IREAD|S_IWRITE Разрешение на чтение/запись. -------------------------------------------------- Возвращаемое При успешном завершении open возвращает целое значение неотрицательное число handle - логический номер открытого файла. Указатель файла (указатель текущей позиции) устанавливается на начало файла. При ошибке функция возвращает значение -1, и переменная errno получает одно из следующих значений: ENOENT - Маршрут или имя файла не найдены. EMFILE - Слишком много открытых файлов. EACCES - Доступ запрещен. EINVACC - Неверный код доступа. Переносимость Функция open поддерживается на системах UNIX. На версии 7 системы UNIX мнемоника O_тип не определена. Система UNIX SYSTEM 3 пользуется всеми мнемониками O_тип за исключением O_BINARY. Смотрите также chmod, chsize, close, _creat, creat, creatnew, creattemp, dup, dup2, fdopen, filelenth, fopen, freopen, gettime, lseek, lock, _open, read, sopen, _write, write. Пример: #include <string.h> #include <stdio.h> #include <fcntl.h> #include <io.h> int main(void) { int handle; char msg[] = "Hello world!"; if((handle = open("TEST.$$$",O_RDWR)) == -1) { perror("Error:"); return 1; } _write(handle,msg,strlen(msg)); _close(Handle); return 0; }