В некоторых ответах используется слово «поджатник». Поиск в Google также приводит к появлению записей, где слово «только что использовалось».
Как я могу понять, что такое «поджатник»?
В некоторых ответах используется слово «поджатник». Поиск в Google также приводит к появлению записей, где слово «только что использовалось».
Как я могу понять, что такое «поджатник»?
Ответы:
Это было реализовано в ядре Linux 3.4 как флаг системного вызова prctl () .
Из
prctl(2)
справочной страницы:Процесс может определить себя как подчиненный с
prctl(PR_SET_CHILD_SUBREAPER)
. Если это так,init
родитель (родительский родительский процесс ), который не является (PID 1), станет родителем сирот , а вместо него ближайший родительский родитель , помеченный как подчиненный, станет новым. Если нет живого прародителя,init
значит.Причиной реализации этого механизма было то, что руководители / супервизоры сервисов пользовательского пространства (например
upstart
,systemd
) должны отслеживать свои запущенные сервисы. Многие сервисы демонизируются с помощью двойного разветвления и неявно переизбираются на PID 1. Менеджер сервисов больше не сможет получатьSIGCHLD
сигналы для них и больше не отвечает за пожинание детейwait()
. Вся информация о детях теряется в тот момент, когда PID 1 очищает заново родившиеся процессы. Теперь процесс диспетчера служб может помечать себя как своего рода «sub-init» и теперь может оставаться родительским для всех потерянных процессов, созданных запущенными службами. ВсеSIGCHLD
сигналы будут доставлены сервис-менеджеру.В Linux, как правило, создается демон, который дважды разветвляется, когда промежуточный процесс завершает работу после разветвления внука. Это обычная техника, позволяющая избежать зомби-процессов . Скрипт инициализации вызывает ребенка. Этот ребенок снова разветвляется и, таким образом, немедленно выходит. Внук будет усыновлен
init
, который постоянно призываетwait()
собирать статусы выхода своих детей, чтобы избежать зомби. С концепцией подзадач менеджер службы пользовательского пространства теперь становится новым родителем, а неinit
.источник