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


18

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

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

Ответы:


13

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

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

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


1
Это правда, но есть ли у него какая-то реальность с сигналом SIGHUP, поскольку я знаю, что он посылается, когда теряется управляющий терминал
Калу

7
Родитель получает сигнал SIGHUP, когда управляющий терминал закрыт. Ребенок не получит SIGHUP, потому что он на новом занятии.
ZN13
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.