С помощью системного вызова kill можно сгенерировать сигналы и передать их другим процессам. Обычно kill используется для того, чтобы принудительно завершить («убить») процесс:
kill(pid, snum);
где: pid — идентификатор процесса;
snum — номер сигнала, который будет передан процессу (см. табл. 5.1).
Pid состоит из идентификатора группы процессов и идентификатора процесса в группе. Если вместо pid указать нуль, то сигнал snum будет направлен всем процессам, относящимся к данной группе (понятие группы процессов аналогично группе пользователей). В одну группу включаются процессы, имеющие общего предка. Идентификатор группы процесса можно изменить с помощью системного вызова setpgrp. Если вместо pid указать –1, то ядро передаст сигнал всем процессам, идентификатор пользователя которых равен идентификатору текущего выполнения процесса, посылающего сигнал. Номера сигналов приведены в табл. 5.1. Сигналы (точнее, их номера) описаны в файле signal.h.
Номера сигналов Таблица 5.1
Номер | Название | Описание |
---|---|---|
01 | SIGHUP | Освобождение линии (hangup) |
02 | SIGINT | Прерывание (interrupt) |
03 | SIGQUIT | Выход (quit) |
04 | SIGILL | Некорректная команда (illegal instruction). He переустанавливается при перехвате |
05 | SIGTRAP | Трассировочное прерывание (trace trap). He переустанавливается при перехвате |
06 | SIGIOT или SIGABRT | Машинная команда IOT. Останов ввода/вывода |
07 | SIGBUS | Ошибка на шине |
08 | SIGFPE | Исключительная ситуация при выполнении операции с вещественными числами (floating-point exception) |
09 | SIGKILL | Уничтожение процесса (kill). He перехватывается и не игнорируется |
10 | SIGUSR1 | Определяемый пользователем сигнал 1 |
11 | SIGSEGV | Некорректное обращение к сегменту памяти (segmentation violation) |
12 | SIGUSR2 | Определяемый пользователем сигнал 2 |
13 | SIGPIPE | Запись в канал, из которого некому читать. Обрыв потока |
14 | SIGALRM | Будильник |
15 | SIGTERM | Программный сигнал завершения |
16 | SIGSTKFLT | Сбой стека |
17 | SIGCHLD (или SIGCLD) | Изменение статуса дочернего процесса |
18 | SIGCONT | Продолжение работы после сигнала STOP. He перехватывается и не игнорируется |
19 | SIGSTOP | Сигнал СТОП. Не перехватывается и не игнорируется |
20 | SIGTSTP | Сигнал останова клавиатуры |
21 | SIGTTIN | Фоновое чтение из терминала (tty) |
22 | SIGTTOU | Фоновая запись на терминал (tty) |
23 | SIGURG | Критическое состояние сокета |
24 | SIGXCPU | Превышенный предел процессорного времени |
25 | SIGXFSZ | Превышенный предел размера файла |
26 | SIGVTALRM | Сигнал виртуального будильника |
27 | SIGPROF | Сигнал профилирующего будильника |
28 | SIGWINCH | Изменение размера окна |
29 | SIGIO | Разрешение ввода/вывода |
30 | SIGPWR | Сбой питания |
31 | SIGSYS | Некорректный параметр системного вызова |
Для нормального завершения процесса используется вызов:
exit(status)
где status — это целое число, возвращаемое процессу-предку для его информирования о причинах завершения процесса-потомка.
Вызов exit может задаваться в любой точке программы, но может быть и неявным, например, при выходе из функции main (при программировании на С) оператор return 0 будет воспринят как системный вызов exit(0).
5.2. Перенаправление ввода/вывода
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии