Троан Эрик В.
Шрифт:
10.4.5. Уничтожение процессом самого себя
Процессы прерывают себя вызовом либо
Две формы,
Регистрация функций, которые должны быть запущены при вызове
Единственный параметр, переданный
10.4.6. Уничтожение других процессов
Разрушение другого процесса почти столь же просто, как создание нового — нужно просто уничтожить его:
25
Это — существенное упрощение. В действительности
Параметр
pid > 0 | Сигнал отправляется процессу с идентификатором pid . Если такого процесса нет, возвращается ESRCH . |
pid < -1 | Сигнал посылается всем процессам, принадлежащим группе с pgid, равным – pid . Например, kill(-5316, SIGKILL) немедленно прерывает все процессы из группы 5316. Такая возможность используется оболочками управления заданиями, как описано в главе 15. |
pid = 0 | Сигнал отправляется всем процессам группы, к которой относится текущий процесс. |
pid = -1 | Сигнал посылается всем процессам системы за исключением инициализирующего процесса (init). Это применяется для полного завершения системы. |
Процессы могут нормально уничтожать вызовом
10.4.7. Дамп ядра
26
Это нужно для того, чтобы управляющая заданиями оболочка могла перезапускать процессы, у которых изменился эффективный идентификатор пользователя. Более подробно об управлении заданиями рассказывается в главе 15.
Хотя мы уже упоминали, что передача
Дамп ядра программы содержит полную хронологию состояния программы перед ее уничтожением [27] . Большинство отладчиков, включая
27
Одна из популярных ранее форм компьютерной памяти выглядела как набор маленьких железных колечек, расположенных на матрице, к каждому из которых подводились два проводка, служащих для установки и считывания магнитной полярности кольца. Эти кольца назывались ядрами (cores), а все вместе — ядерной памятью. Поэтому дамп ядра — это копия состояния системной памяти в определенный момент времени.
Когда процесс нарушает какие-то системные требования (например, пытается обратиться к памяти, доступ к которой запрещен), ядро прерывает процесс, вызывая встроенную версию
Если для процесса установлен лимит на размер файла дампа, равный 0 (рассматривался ранее в этой главе), то никакой дамп ядра не выгружается.
10.5. Простые дочерние процессы
Хотя функции