mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк 

Златоуст.Ru

 

 

OPEN(2)                                                 OPEN(2)

НАЗВАНИЕ 
	open - открыть файл для чтения или записи

СИНТАКСИС 
        #include 

        int open (path, oflag [, mode])
        char *path;
        int oflag, mode;

ОПИСАНИЕ 
	Аргумент path является  указателем  на  маршрутное  имя
	файла.  Системный  вызов  open открывает дескриптор для
	указанного файла и устанавливает флаги статуса файла  в
	соответствии  со значением аргумента oflag. Для файлов,
	не являющихся псевдоустройствами [см. intro(2)], значе-
	ние oflag задается как поразрядное ИЛИ флагов из следу-
	ющего списка (из первых трех  флагов  можно  установить
	только один):

	O_RDONLY 
	     Открыть только на чтение.

	O_WRONLY 
	     Открыть только на запись.

	O_RDWR 
	     Открыть на чтение/запись.

	O_NDELAY 
	     Этот флаг может воздействовать на последующие опе-
	     рации чтения и записи [см. read(2) и write(2)].

	     При  открытии именованного канала с установленными
	     флагами O_RDONLY или O_WRONLY:

	     1. Если установлен флаг O_NDELAY,  то  вызов  open
		только  на  чтение  завершается без задержки, а
		вызов open только для записи отрабатывает с со-
		общением об ошибке, если в  данный  момент  нет
		процесса, открывшего файл для чтения;

	     2. Если не установлен флаг O_NDELAY, то вызов open
		только  на  чтение блокируется, пока какой-либо
		процесс не откроет файл  для  записи,  а  вызов
		open  только на запись блокируется, пока какой 
		либо процесс не откроет файл на чтение.

	     При открытии файла, ассоциированного с линией свя-
	     зи:

	     1. Если установлен флаг O_NDELAY,  то  вызов  open
		завершается без ожидания несущей.

	     2. Если не установлен флаг O_NDELAY, то вызов open
		блокируется до появления несущей.

	O_APPEND 
	     Перед каждой операцией записи устанавливать указа-
	     тель текущей позиции на конец файла.

	O_SYNC 
	     При открытии обычного файла этот флаг воздействует
	     на последующие операции записи. Если флаг установ-
	     лен,  то каждый вызов write(2) ожидает физического
	     обновления как данных, так и статуса файла.

	O_CREAT 
	     Если файл существует, то флаг игнорируется. В про-
	     тивном случае идентификаторы  владельца  и  группы
	     создаваемого  файла устанавливаются равными, соот-
	     ветственно, действующим идентификаторам  пользова-
	     теля  и группы процесса, а младшие 12 бит значения
	     режима доступа  к  файлу  устанавливаются  равными
	     значению аргумента mode, модифицированному следую-
	     щим образом [см. creat(2)]:

	     1. Биты, соответствующие единичным битам маски ре-
		жима  создания  файлов  текущего  процесса [см.
		umask(2)], устанавливаются равными 0.

	     2. Бит навязчивости [см. chmod(2)] устанавливается
		равным 0.

	O_TRUNC 
	     Если файл существует, то он  опустошается  (размер
	     становится  равным  0), а режим доступа и владелец
	     не изменяются.

	O_EXCL 
	     Если установлены оба флага O_EXCL  и  O_CREAT,  то
	     системный  вызов  open  завершается неудачей, если
	     файл уже существует.

	При открытии псевдоустройства значение oflag может  за-
	даваться  как поразрядное ИЛИ флага O_NDELAY с одним из
	флагов O_RDONLY, O_WRONLY или O_RDWR. Другие флаги при-
	менительно  к  псевдоустройствам   игнорируются.   Флаг
	O_NDELAY  воздействует  на  работу драйверов псевдоуст-
	ройств и некоторые  системные  вызовы  [см.  getmsg(2),
	putmsg(2),  read(2), write(2)]. Что касается драйверов,
	то реализация флага O_NDELAY зависит от устройства.

	Некоторые флаги могут быть установлены и после открытия
	файла, посредством системного вызова fcntl(2) [см. так-
	же fcntl(5)].

	Указатель текущей  позиции  устанавливается  на  начало
	файла.

	Новый дескриптор файла остается открытым после выполне-
	ния системных вызовов exec(2) [см. fcntl(2)].

	Системный  вызов open завершается неудачей и дескриптор
	указанного файла не открывается, если выполнено хотя бы
	одно из следующих условий:

	[EACCES]    Нет права на поиск для компонента маршрута.

	[EACCES]    Для указанного файла нет прав на выполнение
		    операций, задаваемых значением oflag.

	[EAGAIN]    Файл существует и доступ к нему  заблокиро-
		    ван [см. chmod(2)].

	[EEXIST]    Флаги O_CREAT и O_EXCL установлены  и  ука-
		    занный файл существует.

	[EFAULT]    Аргумент path указывает за пределы отведен-
		    ного процессу адресного пространства.

	[EINTR]     Во время выполнения системного  вызова  пе-
		    рехвачен сигнал.

	[EIO]       Разрыв  связи или ошибка при открытии псев-
		    доустройства.

	[EISDIR]    Указанный файл является каталогом и  откры-
		    вается на запись или чтение/запись.

	[EMFILE]    Превышается  максимально  допустимое  коли-
		    чество дескрипторов файлов, открытых  одно-
		    временно в одном процессе.

	[EMULTIHOP] Компоненты path требуют многократного обра-
		    щения к удаленным компьютерам.

	[ENFILE]    Переполнение системной таблицы файлов.

	[ENOENT]    Флаг O_CREAT не установлен и указанный файл
		    не существует.

	[ENOLINK]   Маршрутное имя path указывает на  удаленный
		    компьютер, связи с которым в данный  момент
		    нет.

	[ENOMEM]    Система не в состоянии выделить память  под
		    дескриптор пересылки.

	[ENOSPC]    Установлены флаги O_CREAT и  O_EXCL  и  нет
		    свободных описателей файлов.

	[ENOSR]     Нет места для потока.

	[ENOTDIR]   Компонент маршрута не является каталогом.

	[ENXIO]     Указанный файл  является  специальным  сим-
		    вольным  или  блочным файлом, а устройство,
		    ассоциированное с этим специальным  файлом,
		    не существует.

	[ENXIO]     Установлены флаги O_NDELAY и O_WRONLY, ука-
		    занный  файл является именованным каналом и
		    нет процесса, открывшего файл для чтения.

	[ENXIO]     Неудачная попытка выполнить  процедуру  от-
		    крытия  для  модуля или драйвера псевдоуст-
		    ройства.

	[EROFS]     Указанный файл расположен в файловой систе-
		    ме,  доступной только на чтение, а открыва-
		    ется на запись или чтение/запись.

	[ETXTBSY]   Файл содержит секцию команд, которая в дан-
		    ный момент выполняется.

СМ. ТАКЖЕ 
	chmod(2),   close(2),   creat(2),   dup(2),   fcntl(2),
	intro(2),  lseek(2),  read(2),  getmsg(2),   putmsg(2),
	umask(2), write(2), fcntl(5).

ДИАГНОСТИКА 
	При успешном завершении результатом  служит  дескриптор
	файла;  в  случае  ошибки возвращается -1, а переменной
	errno присваивается код ошибки.



 

 

Бернадинер Марк Абрамович

Мое резюме

Компьютерная страничка

Ресурсы сети

Фотоальбом

 

 

 

mark.zlatoust.ru Послать письмо Webmaster-у Web-Master © Бернадинер Марк