Читаем Linux API. Исчерпывающее руководство полностью

• O_LARGEFILE — открытие файла в режиме поддержки больших файлов. Этот флаг применяется в 32-разрядных системах для работы с большими файлами. Хотя флаг O_LARGEFILE в SUSv3 не указан, его можно найти в некоторых других реализациях UNIX. В 64-разрядных реализациях Linux, таких как Alpha и IA-64, этот флаг работать не будет. Дополнительные сведения о нем даются в разделе 5.10.

• O_NOATIME (с выходом Linux 2.6.8) — отказ от обновления времени последнего обращения к файлу (поле st_atime рассматривается в разделе 15.1) при чтении из файла. Чтобы можно было воспользоваться этим флагом, действующий идентификатор пользователя вызывающего процесса должен соответствовать владельцу файла или же процесс должен быть привилегированным (CAP_FOWNER). В противном случае системный вызов open() не будет выполнен и будет выдана ошибка EPERM. (В действительности, как указывается в разделе 9.5, для непривилегированного процесса речь идет о пользовательском идентификаторе файловой системы, а не о его действующем ID пользователя. Именно он должен совпадать с идентификатором пользователя файла при открытии этого файла с флагом O_NOATIME.) Флаг относится к нестандартным расширениям Linux. Для предоставления его определения из следует задать макрос проверки возможностей _GNU_SOURCE. Флаг O_NOATIME предназначен для использования программами индексации и создания резервных копий. Его применение может существенно сократить объем активного использования диска, поскольку не потребуются многочисленные перемещения вперед и назад по диску для чтения содержимого файла, а также обновления времени последнего обращения к файлу в индексном дескрипторе (см. раздел 14.4). Функциональные возможности, похожие на обеспечиваемые флагом O_NOATIME, доступны при использовании флагов MS_NOATIME и FS_NOATIME_FL (см. раздел 15.5) во время системного вызова mount() (см. подраздел 14.8.1).

• O_NOCTTY — предотвращение превращения открываемого файла в управляющий терминал, если он является терминальным устройством. Управляющие терминалы рассматриваются в разделе 34.4. Если открываемый файл не является терминалом, флаг не работает.

• O_NOFOLLOW — обычно системный вызов open() разыменовывает символьную ссылку. Но, если задан флаг O_NOFOLLOW и аргумент pathname является символьной ссылкой, вызов open() не выполняется (в errno заносится значение ELOOP). Этот флаг особенно пригодится в привилегированных программах, чтобы обеспечить отказ от разыменования символьной ссылки при системном вызове open(). Для предоставления определения этого флага из следует добавить макрос проверки возможностей _GNU_SOURCE.

• O_NONBLOCK — открытие файла в неблокируемом режиме (см. раздел 5.9).

• O_SYNC — открытие файла для синхронизированного ввода-вывода. Обратите внимание на буферизацию ввода-вывода на уровне ядра, рассматриваемую в разделе 13.3.

• O_TRUNC — усечение файла до нулевой длины с удалением любых существующих данных, если файл уже существует и является обычным. В Linux усечение происходит, когда файл открывается для чтения или для записи (в обоих случаях нужны права доступа к файлу для записи). В SUSv3 сочетание флагов O_RDONLY и O_TRUNC не оговорено техническими условиями, но большинство других реализаций UNIX ведут себя так же, как и Linux.

4.3.2. Ошибки, возвращаемые из системного вызова open()

В случае возникновения ошибки при попытке открытия файла системный вызов open() возвращает –1, а в errno идентифицируется причина ошибки. Далее перечислены возможные ошибки, которые могут произойти (вдобавок к тем, что уже были упомянуты при описании только что рассмотренного аргумента flags).

• EACCES — права доступа к файлу не позволяют вызывающему процессу открыть файл в режиме, указанном флагами. Из-за прав доступа к каталогу доступ к файлу невозможен или файл не существует и не может быть создан.

• EISDIR — указанный файл является каталогом, а вызывающий процесс пытается открыть его для записи. Это запрещено. (С другой стороны, есть случаи, когда может быть полезно открыть каталог для чтения. Пример будет рассмотрен в разделе 18.11.)

• EMFILE — достигнуто ограничение ресурса процесса на количество файловых дескрипторов (RLIMIT_NOFILE, рассматривается в разделе 36.3).

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных