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

Для многих определяемых POSIX.1-1990 функций требуется, чтобы заголовочный файл был включен ранее любого другого заголовочного файла, связанного с функцией. Но данное требование стало излишним, поскольку большинство современных реализаций UNIX не требуют от приложений включения этого заголовочного файла. Поэтому из SUSv1 это требование было удалено. И тем не менее при написании портируемых программ будет все же разумнее поставить этот заголовочный файл на первое место. (Но из наших примеров программ этот заголовочный файл исключен, поскольку для Linux он не требуется, и мы можем сократить длину примеров на одну строку.)

3.7. Резюме

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

Стандартная библиотека языка C предоставляет множество библиотечных функций, выполняющих широкий диапазон задач. Одним библиотечным функциям для выполнения их работы требуются системные вызовы, другие же выполняют свои задачи исключительно в пользовательском пространстве. В Linux в качестве реализации стандартной библиотеки языка C обычно применяется glibc.

Большинство системных вызовов и библиотечных функций возвращают признак, показывающий, каким был вызов — успешным или неудачным. Надо всегда проверять этот признак.

В данной главе были введены некоторые функции, реализованные нами для использования в примерах книги. Задачи, выполняемые этими функциями, включают диагностику ошибок и анализ аргументов командной строки.

В главе рассмотрены правила и подходы, которыми можно воспользоваться для написания портируемых системных программ, запускаемых на любой соответствующей стандарту системе.

При компиляции приложения можно задавать различные макросы проверки возможностей. Они управляют определениями, которые предоставляются заголовочными файлами. Их использование пригодится для обеспечения гарантий соответствия программы формальному или определяемому реализацией стандарту (или стандартам).

Портируемость системных программ можно улучшить, используя типы системных данных, которые определены в различных стандартах и могут отличаться от типов, присущих языку C. В SUSv3 указывается широкий диапазон типов системных данных, которые должны поддерживаться реализациями и использоваться приложениями.

3.8. Упражнение

3.1. Когда для перезапуска системы используется характерный для Linux системный вызов reboot(), в качестве второго аргумента magic2 необходимо указать одно из магических чисел (например, LINUX_REBOOT_MAGIC2). Какой смысл несут эти числа? (Подсказка: обратите внимание на шестнадцатеричное представление такого числа4.)

3 Подробнее о нем вы можете прочитать по адресу http://microsin.net/programming/arm/lvalue-rvalue.html. — Примеч. пер.

4 Таким образом закодировны дни рождения Торвальдса и его дочерей: https://stackoverflow.com/questions/4808748/magic-numbers-of-the-linux-reboot-system-call.

<p>4. Файловый ввод-вывод: универсальная модель ввода-вывода</p>

Теперь перейдем к подробному рассмотрению API системных вызовов. Лучше всего начать с файлов, поскольку они лежат в основе всей философии UNIX. Основное внимание в этой главе будет уделено системным вызовам, предназначенным для выполнения файлового ввода-вывода.

Вы узнаете, что такое дескриптор файла, а затем мы рассмотрим системные вызовы, составляющие так называемую универсальную модель ввода-вывода. Это те самые системные вызовы, которые открывают и закрывают файл, а также считывают и записывают данные.

Особое внимание мы уделим вводу-выводу, относящимся к дисковым файлам. При этом большая часть информации из текущей главы важна для усвоения материала последующих глав, поскольку те же самые системные вызовы используются для выполнения ввода-вывода во всех типах файлов, в том числе конвейерах и терминалах.

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

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

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

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

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

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

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

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

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