SIGCHLD

SIGCHLD
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().

В Perl-е установка

$SIG{'CHLD'}="IGNORE"

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

Python при

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

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

Сигналы POSIX
SIGABRT | SIGALRM | SIGFPE | SIGHUP | SIGILL | SIGINT | SIGKILL | SIGPIPE | SIGQUIT | SIGSEGV | SIGTERM | SIGUSR1 | SIGUSR2 | SIGCHLD | SIGCONT | SIGSTOP | SIGTSTP | SIGTTIN | SIGTTOU | SIGBUS | SIGPOLL | SIGPROF | SIGSYS | SIGTRAP | SIGURG | SIGVTALRM | SIGXCPU | SIGXFSZ |

Сигналы реального времени (определяемые пользователем) — SIGRTMIN — SIGRTMAX.

Некоторые сигналы не включенные в POSIX и синонимы
SIGIOT | SIGEMT | SIGSTKFLT | SIGIO | SIGCLD | SIGPWR (SIGINFO) | SIGLOST | SIGWINCH | SIGUNUSED

Wikimedia Foundation. 2010.

Игры ⚽ Поможем написать курсовую

Полезное


Смотреть что такое "SIGCHLD" в других словарях:

  • SIGCHLD — Saltar a navegación, búsqueda SIGCHLD Descripción: El proceso hijo terminado o parado Acción por defecto: Ignorar la señal SA SEÑALINFO macros CLD EXITED el proceso hijo ha ejecutado un exit CLD KILLED el proceso hijo ha terminado anormalmente y… …   Wikipedia Español

  • SIGCHLD — ] . This is shown in various languages in the table below. However, installing a signal handler for SIGCHLD and calling wait remains the most portable way to avoid zombies. References …   Wikipedia

  • SIGCHLD — Signal bei Termination oder Stop eines Kindprozess unter X/Open und BSD UNIX ( >xedit /usr/include/signal.h) …   Acronyms

  • SIGCHLD — Signal bei Termination oder Stop eines Kindprozess unter X/Open und BSD UNIX ( >xedit /usr/include/signal.h) …   Acronyms von A bis Z

  • Процесс-зомби — Процесс зомби, зомби (англ. zombie process, англ. defunct process)  дочерний процесс в Unix системе, завершивший своё выполнение, но ещё присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу… …   Википедия

  • TTY-абстракция — Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии. У этого термина существуют и другие значения, см. Tty. Подсистема TTY, или TTY абстракция  это одна из …   Википедия

  • Zombie-Prozess — Ein Zombie ist vor allem in Unix ähnlichen Betriebssystemen (wie z. B. Linux) ein Prozess, der beendet ist, aber trotzdem noch in der Prozesstabelle auftaucht und geringfügig Systemressourcen belegt. Ein Zombie richtet selbst keinen Schaden an,… …   Deutsch Wikipedia

  • Zombie (EDV) — Ein Zombie ist vor allem in Unix ähnlichen Betriebssystemen (wie beispielsweise Linux) ein Prozess, der beendet ist, aber trotzdem noch in der Prozesstabelle auftaucht und geringfügig Systemressourcen belegt. Ein Zombie richtet selbst keinen… …   Deutsch Wikipedia

  • Zombie — Процесс зомби, зомби (англ. zombie process, англ. defunct process) дочерний процесс в Unix системе, завершивший своё выполнение, но еще присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу считать код… …   Википедия

  • Зомби-процесс — Процесс зомби, зомби (англ. zombie process, англ. defunct process) дочерний процесс в Unix системе, завершивший своё выполнение, но еще присутствующий в списке процессов операционной системы, чтобы дать родительскому процессу считать код… …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»