Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

OPEN(2)

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

СИНТАКСИС


        #include <fcntl.h>



        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 присваивается код ошибки

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...