Каждый ли выход (либо_exit, либо выход) от дочернего элемента отправляет SIGCHLD своему родительскому элементу? Если это так, то как создается зомби-процесс? Поскольку системный вызов ожидания обычно вызывается в обработчике SIGCHLD.
процесс зомби, SIGCHLD, выход в unix
comment
Одна из основных причин: родительский объект не вызывает wait () для дочернего элемента и не завершает работу. Таким образом, init не может получить дочерний процесс. ЕСЛИ родительский процесс завершился без вызова wait (), тогда init возьмет на себя управление и пожнет дочерний процесс. Зомби обычно являются результатом плохой практики программирования.
- person jim mcnamara   schedule 04.06.2013
Ответы (1)
Да, каждый умирающий процесс вызывает отправку SIGCHLD своему родителю - если, конечно, родитель не установил SIGCHLD на игнорирование.
Если родительский процесс не игнорирует SIGCHLD, то мертвый потомок становится зомби до тех пор, пока его не пожинает родитель с использованием waitpid()
или одного из его вариантов. Если родитель не пожнет мертвого ребенка, он останется зомби.
person
Celada
schedule
04.06.2013