intro

INTRO(2)                 Руководство программиста Linux                 INTRO(2)



ИМЯ
       intro - введение в системные вызовы

ОПИСАНИЕ
       В разделе 2 описываются системные вызовы Linux. Системный вызов — это
       точка входа в ядро Linux. Обычно, системные вызовы не запускаются
       напрямую, вместо этого почти все системные вызовы имеют соответствующие
       обёрточные функции в библиотеке C, которая выполняет некоторые действия
       (например, подготовку к работе в режиме ядра) для запуска системного
       вызова. Таким образом, работа с системным вызовом выглядит также как
       вызов обычной библиотечной функции.

       Во многих случаях обёрточная функция библиотеки C делает не более чем:

       *  копирует аргументы и уникальный номер системного вызова в регистры,
          где ядро ожидает их найти, и затем;

       *  передаёт управление в режим ядра в место, где ядро выполняет всю
          работу системным вызовом;

       *  изменяет errno, если системный вызов вернул номер ошибки при возврате
          ядром ЦП в пользовательский режим.

       Однако в некоторых случаях обёрточная функция может делать дополнительную
       работу, например, выполнять предварительную обработку аргументов до
       перехода в режим ядра и обработку значений, полученных от системного
       вызова. В этом случае в справочных страницах раздела 2, обычно,
       приводятся подробности программного интерфейса библиотеки C (обычно GNU)
       и системного вызова. Чаще всего, в главном ОПИСАНИИ даётся интерфейс
       библиотеки C, а отличия системного вызова приводятся в разделе ЗАМЕЧАНИЯ.

       Список системных вызовов Linux можно найти в syscalls(2).

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
       В случае ошибки большинство системных вызовов возвращает отрицательное
       число (т.е., отрицательное значение одной из констант, описанных в
       errno(3)). Обёртка в библиотеке C скрывает эту информацию от вызывающей
       стороны: когда системный вызов возвращает отрицательное значение, обёртка
       копирует абсолютное значение в переменную errno и возвращает -1 в
       качестве результата своей работы.

       Значение результата успешной работы системного вызова зависит от вызова.
       Многие системные вызовы в этом случае возвращают 0, а некоторые могут
       вернуть ненулевое значение. Подробно об этом написано в справочной
       странице самого вызова.

       В некоторых случаях программист должен определить макрос тестирования
       свойств, чтобы получить объявление системного вызова из заголовочного
       файла, указанного в справочной странице в разделе СИНТАКСИС. (Где
       необходимо, эти макросы тестирования свойств должны быть определены перед
       включением какого-либо заголовочного файла.) В таких случаях требуемый
       макрос описан в справочной странице. Подробней о макросах тестирования
       свойств написано в feature_test_macros(7).

СООТВЕТСТВИЕ СТАНДАРТАМ
       Для обозначение вариантов UNIX и разнообразных стандартов, которым
       соответствуют системные вызовы, описанные в этом разделе, используются
       различные сокращения. См. standards(7).

ЗАМЕЧАНИЯ
   Непосредственный вызов
       В большинстве случаев, не требуется запускать системный вызов напрямую,
       но иногда в стандартной библиотеке C может не оказаться нужной обёрточной
       функции. В этом случае программист должен вручную выполнить системный
       вызов с помощью syscall(2). Исторически, также осталось возможно сделать
       с помощью макросов _syscall, описанных в _syscall(2).

   Авторы и условия распространения
       Авторы и условия распространения указаны в заголовке исходной справочной
       страницы. Заметим, что у разных страниц они могут быть разными! Список
       русских переводчиков для каждой страницы можно найти в .po файле в
       исходном коде пакета.

СМОТРИТЕ ТАКЖЕ
       _syscall(2), syscall(2), syscalls(2), errno(3), intro(3),
       capabilities(7), credentials(7), feature_test_macros(7), mq_overview(7),
       path_resolution(7), pipe(7), pty(7), sem_overview(7), shm_overview(7),
       signal(7), socket(7), standards(7), svipc(7), symlink(7), time(7)



Linux                              2014-02-20                           INTRO(2)