Существует класс процесса, именуемый
Сигналы
Имена сигналов задаются с помощью включенного заголовочного файла signal.h. Они начинаются с префикса SIG и включают приведенные в табл. 11.3 сигналы.
| Имя сигнала | Описание |
|---|---|
SIGABORT | *Процесс аварийно завершается |
SIGALRM | Сигнал тревоги |
SIGFPE | *Исключение операции с плавающей точкой |
SIGHUP | Неожиданный останов или разъединение |
SIGILL | *Некорректная команда |
SIGINT | Прерывание терминала |
SIGKILL | Уничтожение (не может быть перехвачен или игнорирован) |
SIGPIPE | Запись в канал без считывателя |
SIGQUIT | Завершение работы терминала |
SIGSEGV | *Некорректный доступ к сегменту памяти |
SIGTERM | Завершение, выход |
SIGUSR1 | Сигнал 1, определенный пользователем |
SIGUSR2 | Сигнал 2, определенный пользователем |
*Могут быть также предприняты действия, зависящие от конкретной реализации.
Если процесс получает один из этих сигналов без предварительной подготовки к его перехвату, процесс будет немедленно завершен. Обычно при этом создается файл с дампом ядра. Этот файл в текущем каталоге, названный core, представляет собой образ процесса, который может оказаться полезным при отладке.
К дополнительным относятся сигналы, приведенные в табл. 11.4.
| Имя сигнала | Описание |
|---|---|
SIGCHLD | Дочерний процесс остановлен или завершился |
SIGCONT | Продолжить выполнение, если процесс был приостановлен |
SIGSTOP | Остановить выполнение (не может захватываться или игнорироваться) |
SIGTSTP | Сигнал останова, посылаемый с терминала |
SIGTTIN | Фоновый процесс пытается читать |
SIGTTOU | Фоновый процесс пытается писать |
Сигнал SIGCHLD может быть полезен для управления дочерними процессами. По умолчанию он игнорируется. Остальные сигналы заставляют процессы, получившие их, остановиться, за исключением сигнала SIGCONT, который вызывает возобновление процесса. Они применяются программами командной оболочки для контроля работы и редко используются в пользовательских программах.
Чуть позже мы рассмотрим более подробно первую группу сигналов. Пока же достаточно знать, что если командная оболочка и драйвер терминала нормально настроены, ввод символа прерывания (обычно от нажатия комбинации клавиш SIGINT приоритетному процессу, т.е. программе, выполняющейся в данный момент. Это вызовет завершение программы, если в ней не предусмотрен перехват сигнала,