[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 Типы системных вызовов

Системные вызовы - это интерфейс между пользовательским процессом и
операционной системой. Существуют системные вызовы для:
.    Ввода/вывода: например, read, write и ioctl.
.    Управления файлами: например, open, close и mknod.
.    Доступа к системным данным: например, getuid и getpid.
.    Управления процессами и их синхронизации: например, signal, wait
и semop.
.    Управления памятью: например, brk и sbrk.

Интерфейс между пользовательским процессом и операционной системой для
обеспечения:

.    Ввода/вывода
.    Управления файлами
.    Доступа к системным данным
.    Управления и синхронизации процессов
.    Управления памятью


Системные вызовы выглядят так же, как и обычные вызовы функций. Многие
из них требуют аргументы, и все возвращают значение. Некоторые
получают значения системных данных, в то время как остальные
запрашивают у ядра исполнение какого-либо действия (например, unlink -
удалить запись в директории).
Большинство системных вызовов при неуспехе возвращает -1. Кроме того,
внешней переменной errno присваивается значение, отражающее причину
неуспеха [см. intro(2)]. Значение errno может быть использовано как
индекс в таблице заранее определенных сообщений об ошибках. Для
использования этой переменной включите в программу файл <errno.h>. Он
определяет errno как:

          extern int errno;

errno только устанавливается системными вызовами. Его значение не
сбрасывается в ноль успешным системным вызовом, поэтому оно должно
анализироваться, только если системный вызов возвратил неуспех.
Многие библиотечные функции используют системные вызовы. Если
системный вызов из такой функции заканчивается неудачно, то можно
исследовать errno для определения причины неуспеха.
В зависимости от того, используете вы разделяемые или архивные
библиотеки, для каждого системного вызова существует маленький
объектный модуль в разделяемой библиотеке /usr/ccs/lib/libc.so или
архивной библиотеке /usr/ccs/lib/libc.a для установки параметров
вызова и переключения контекста в системный режим.