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;
}
