Почему мы используем setsid() при демонизации процесса?

Почему мы используем setsid() при демонизации процесса?

Для того, чтобы создатьслужба (демон)мы разветвляем родительский процесс и заставляем его выйти, делая потомка лидером сеанса, вызывая setsid(). Более того, почему мы используем setsid()? О нашем сиротском процессе заботится init(хотя и не во всех случаях) процесс.

Почему мы используем setsid()? Есть ли связь между setsid()и обработкой SIGHUPсигнала?.

решение1

Мы используем setsid(), потому что если мы просто убьём родителя, то потомок тоже будет убит, setsid():

создает новый сеансесли вызывающий процесс не является лидером группы процессов. Вызывающий процесс является лидером нового сеанса, лидером группы процессов новой группы процессов и не имеет управляющего терминала.

Родительский процесс является первым лидером группы процессов, его завершение (или завершение сеанса/терминала) завершает группу, поэтому мы меняем лидера (и создаем новый сеанс, пока он находится в этом состоянии).

Связанный контент