Читаем 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.

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

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

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

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

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

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

C++ Primer Plus
C++ Primer Plus

C++ Primer Plus is a carefully crafted, complete tutorial on one of the most significant and widely used programming languages today. An accessible and easy-to-use self-study guide, this book is appropriate for both serious students of programming as well as developers already proficient in other languages.The sixth edition of C++ Primer Plus has been updated and expanded to cover the latest developments in C++, including a detailed look at the new C++11 standard.Author and educator Stephen Prata has created an introduction to C++ that is instructive, clear, and insightful. Fundamental programming concepts are explained along with details of the C++ language. Many short, practical examples illustrate just one or two concepts at a time, encouraging readers to master new topics by immediately putting them to use.Review questions and programming exercises at the end of each chapter help readers zero in on the most critical information and digest the most difficult concepts.In C++ Primer Plus, you'll find depth, breadth, and a variety of teaching techniques and tools to enhance your learning:• A new detailed chapter on the changes and additional capabilities introduced in the C++11 standard• Complete, integrated discussion of both basic C language and additional C++ features• Clear guidance about when and why to use a feature• Hands-on learning with concise and simple examples that develop your understanding a concept or two at a time• Hundreds of practical sample programs• Review questions and programming exercises at the end of each chapter to test your understanding• Coverage of generic C++ gives you the greatest possible flexibility• Teaches the ISO standard, including discussions of templates, the Standard Template Library, the string class, exceptions, RTTI, and namespaces

Стивен Прата

Программирование, программы, базы данных
1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

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

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

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

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

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