WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте
SIGCHLD
Описание: Состояние дочернего процесса изменилось
По умолчанию: игнорируется
коды SA_SIGINFO
CLD_EXITED нормальное завершение
CLD_KILLED аварийное завершение (без дампа памяти)
CLD_DUMPED аварийное завершение с дампом памяти
CLD_TRAPPED завершен отладочной ловушкой
CLD_STOPPED остановлен
CLD_CONTINUED выполнение продолжено после остановки

В POSIX-системах SIGCHLDсигнал, посылаемый при изменении статуса дочернего процесса (завершен, приостановлен или возобновлен).

SIGCHLD — целочисленная константа, определенная в заголовочном файле signal.h. Символьные имена сигналов используются вместо номеров, так как в разных реализациях номера сигналов могут различаться.

Этимология

SIG — общий префикс сигналов, CHLD — сокращенное написание англ. child — ребенок, дочерний объект (английский компьютерный жаргон).

Использование

В Unix процесс может порождать «дочерние» процессы системным вызовом fork() или его вариантами. Родительский процесс, если он существует, уведомляется системой о завершении дочерних процессов (или изменении их состояния) сигналом SIGCHLD. Родительский процесс не должен предпринимать для этого никаких действий. Сигнал может быть игнорирован, если не нуждается в обработке (по умолчанию он игнорируется).

Процессы-зомби

Дочерний процесс по завершении становится «зомби» — пустой записью в таблице процессов, хранящей информацию о завершенном процессе (точнее — код завершения) - до тех пор, пока родительский процесс не получит эту информацию с помощью системного вызова wait() или не завершится сам.

В короткоживущих программах наличие «зомби» вполне нормальное явление — зомби не занимают много ресурсов и исчезают с завершением родительского процесса. Но аккуратные программисты всегда заботятся об обработке «зомби». В общем случае для предотвращения накопления «зомби» программа должна использовать обработчик сигнала SIGCHLD c вызовом wait(), однако это совсем не обязательно если вызывающая программа не делает в обработчике SIGCHLD ничего кроме wait, то можно просто установить этот обработчик в SIG_IGN и процессы зомби будут собираться [1]автоматически. Тут следует заметить что установка SIGCHLD в SIG_IGN совместима с POSIX.1-2001, и не совместима с POSIX.1-1990.

на самом деле устанавливает обработчик с обработкой процессов-зомби, как описано выше.

Python при

signal.signal(signal.SIGCHLD, signal.SIG_IGN)

делает то же самое.

Примечания

  1. microHOWTO: Reap zombie processes using a SIGCHLD handler. www.microhowto.info. Проверено 4 мая 2016.


Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии