Раздел 2 руководства описывает системные вызовы Linux.
Системный вызов - это точка входа в ядро Linux. Как правило,
системные вызовы не вызываются напрямую: вместо этого большинство системных вызовов
имеют соответствующие функции оболочки библиотеки C, которые выполняют
необходимые шаги (например, переход в режим ядра) для выполнения
системного вызова.
Таким образом, выполнение системного вызова выглядит так же, как
вызов обычной библиотечной функции.
установка errno, если системный вызов возвращает номер ошибки, когда
ядро возвращает процессор в пользовательский режим.
Однако в некоторых случаях функция-оболочка может делать гораздо больше,
например, выполнение некоторой предварительной обработки аргументов перед переходом в режим ядра
или постобработки значений, возвращаемых системным вызовом.
В этом случае на страницах руководства в Разделе 2, как правило, делается попытка описать
детали как интерфейса API библиотеки C (обычно GNU), так и необработанного системного вызова.
Чаще всего основное ОПИСАНИЕ будет сфокусировано на интерфейс библиотеки C,
а различия для системного вызова будут описаны в разделе ПРИМЕЧАНИЯ.
Список системных вызовов Linux смотрите в syscalls (2).
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае ошибки большинство системных вызовов возвращают отрицательный номер ошибки,
т.е. отрицательное значение одной из констант, описанных в errno (3).
Оболочка библиотеки C скрывает эту деталь от вызывающего:
когда системный вызов возвращает отрицательное значение, оболочка копирует
абсолютное значение в переменную errno и возвращает -1 в качестве
возвращаемого значения оболочки.
Значение, возвращаемое успешным системным вызовом, зависит от вызова.
Многие системные вызовы возвращают 0 в случае успеха, но некоторые могут возвращать
ненулевые значения при успешном вызове. Подробности описаны на соответствующих страницах руководства.
В некоторых случаях программист должен определить макрос проверки функций,
чтобы получить объявление системного вызова из файла заголовка, указанного в разделе
SYNOPSIS страницы руководства. При необходимости эти макросы тестирования функций
должны быть определены до включения любых файлов заголовков.
В таких случаях требуемый макрос описан на странице руководства.
Для получения дополнительной информации о макросах тестирования функций см. Feature_test_macros (7).
Для обозначения UNIX используются определенные термины и сокращения.
Варианты и стандарты, которым соответствуют вызовы в этом разделе. См. standards(7).
Прямой вызов
В большинстве случаев нет необходимости вызывать системный вызов напрямую,
но бывают случаи, когда стандартная библиотека C не реализует для вас удобную функцию-оболочку.
В этом случае программист должен вручную вызвать системный вызов с помощью syscall (2).
Исторически это также было возможно с помощью одного из макросов, описанных в _syscall (2).
Cмотри также
_syscall (2) , syscall (2) , syscalls (2) , errno (3) , intro (3) ,
features (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) ,
стандарты (7) , символическая ссылка (7) , system_data_types (7) , sysvipc (7) ,
время (7)