ВСТУП(2) Підручник програміста Linux ВСТУП(2)

НАЗВА

intro — вступ до системних викликів

ОПИС

У розділі 2 підручника описано системні виклики Linux. Системний виклик є точкою входу до ядра Linux. Зазвичай, системні виклики не використовують безпосередньо: замість цього, у більшості системних викликів є відповідні функції-обгортки з бібліотеки C, які виконують відповідні кроки (наприклад переривання до режиму ядра) для реалізації системного виклику. Таким чином, системний виклик стає викликом звичайної функції бібліотеки.

У більшості випадків функція-обгортка бібліотеки C не виконує ніяких додаткових дій, окрім:

  • копіювання аргументів та унікального числа системного виклику до регістрів, де на них очікує ядро;
  • створення пастки для режиму ядра на місці, де ядро виконує обробку системного виклику;
  • встановлення errno, якщо системний виклик повертає номер помилки, коли ядро повертає процесор у режим обробки команд користувача.

Втім, у деяких випадках, функція-обгортка може виконувати дещо ширший спектр дії, ніж цей, наприклад, виконувати певну попередню обробку аргументів до переривання до режиму ядра або виконувати остаточну обробку значень, які повернуто системним викликом. Там, де має місце подібна ситуація, сторінки підручника у Розділі 2, зазвичай, намагаються описати подробиці одразу програмного інтерфейсу (зазвичай, GNU) бібліотеки C і простого системного виклику. Здебільшого, основний розділ ОПИС концентрується на інтерфейсі бібліотеки C, а відмінності самого системного виклику описано у розділі ПРИМІТКИ.

Список системних викликів Linux можна знайти на сторінці підручника syscalls(2).

ПОВЕРНУТЕ ЗНАЧЕННЯ

При помилці більшість системних викликів повертають від'ємний код помилки (тобто від'ємне значення однієї зі сталих, які описано на сторінці errno(3)). Бібліотека-обгортка мовою C приховує ці подробиці від коду, звідки виконують виклик: якщо системний виклик повертає від'ємне значення, обгортка копіює значення за модулем до змінної errno і повертає -1, як повернуте значення обгортки.

Значення, яке повертає успішний системний виклик залежить від виклику. Багато системних викликів повертають 0 при успіху, але деякі можуть повертати ненульові значення з успішного виклику. Подробиці описано на окремих сторінках підручника.

У деяких випадках програмісту слід визначити макрос перевірки наявності можливостей для отримання оголошення системного виклику з файла заголовків, вказаного у розділі КОРОТКИЙ ОПИС сторінки підручника. (Де це потрібно, цей макрос перевірки наявності можливостей має бути визначено до включення будь-яких файлів заголовків.) У таких випадках потрібний макрос описано на відповідній сторінці підручника. Щоб дізнатися більше про макроси перевірки наявності можливостей, зверніться до сторінки feature_test_macros(7).

ВІДПОВІДНІСТЬ

У цьому розділі у викликах використано певні терміни та скорочення, які позначають варіанти і стандарти UNIX. Див. standards(7).

ПРИМІТКИ

Безпосередній виклик

Здебільшого, немає потреби у виклику системного виклику безпосередньо, але іноді, коли стандартна бібліотека C не реалізує зручної для вас функції-обгортки. У цьому випадку програміст має вручну викликати системний виклик за допомогою syscall(2). Історично, це також можна було зробити за допомогою одного з макросів _syscall, які описано на сторінці _syscall(2).

Автори і умови авторських прав

Дані щодо авторів і умов авторських прав наведено у заголовку початкового коду сторінки підручника. Зауважте, що для різних сторінок ці дані можуть бути різними!

ДИВ. ТАКОЖ

_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)

ПІСЛЯМОВА

Ця сторінка є частиною випуску 5.13 проєкту man-pages Linux. Опис проєкту, дані щодо звітування про вади та найсвіжішу версію цієї сторінки можна знайти за адресою https://www.kernel.org/doc/man-pages/.

ПЕРЕКЛАД

Український переклад цієї сторінки посібника виконано Yuri Chornoivan <yurchor@ukr.net>

Цей переклад є безкоштовною документацією; будь ласка, ознайомтеся з умовами GNU General Public License Version 3. НЕ НАДАЄТЬСЯ ЖОДНИХ ГАРАНТІЙ.

Якщо ви знайшли помилки у перекладі цієї сторінки підручника, будь ласка, надішліть електронний лист до списку листування перекладачів: trans-uk@lists.fedoraproject.org.

27 серпня 2021 року Linux