Описание функций Си

Open



     open

Функция открывает файл для чтения или записи.

Синтаксис #include

#include

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.

Смотрите также ,


Содержание раздела