В операционной системе Linux у каждого ребенка есть какой-то родитель, и даже если родитель умирает раньше, чем ребенок, он наследуется процессом init (PID: 1).Это сделано для того, чтобы не было никакого процесса-зомби (запись процесса есть в таблице процессов, но процесс фактически уже умер), который занимает место в памяти без использования.
Ядро следит за всеми процессами, которые были остановлены либо из-за их полного выполнения, либо по какой-то другой причине (например, недопустимый доступ к памяти), и сохраняет некоторую информацию, например, состояние выхода ребенка.Когда ребенок завершает работу, SIGCHLD
сигнал отправляется родителю.По умолчанию сигнал просто игнорируется.Однако обычно системный вызов wait()
реализован в обработчике для SIGCHLD, так что родитель может действовать в зависимости от состояния выхода ребенка.