Provided by: manpages-ru_4.19.0-7_all bug

ИМЯ

       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), symlink(7),
       system_data_types(7), sysvipc(7), time(7)

ПЕРЕВОД

       Русский перевод этой страницы руководства был сделан Azamat Hackimov
       <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>, Yuri Kozlov
       <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

       Этот перевод является бесплатной документацией; прочитайте Стандартную общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.