Pourquoi utilisons-nous setsid () lors de la démonétisation d'un processus?

18

Afin de créer un service (démon), nous bifurquons le parent et le faisons sortir tout en faisant de l'enfant le chef de session en appelant setsid(). De plus, pourquoi utilisons-nous setsid ()? Notre processus orphelin est pris en charge par init(mais pas dans tous les cas).

Pourquoi utilisons-nous stsid ()? Y a-t-il une relation entre le signal setsid()et son traitement SIGHUP?

Kalu
la source

Réponses:

13

Nous utilisons setsid () parce que si nous tuons simplement le parent, l'enfant sera tué aussi, le setsid ()

crée une nouvelle session si le processus appelant n'est pas un chef de groupe de processus. Le processus appelant est le leader de la nouvelle session, le leader du groupe de processus du nouveau groupe de processus et n'a pas de terminal de contrôle.

Le parent est le premier leader du groupe de processus, le tuer - ou tuer la session / le terminal - tue le groupe, c'est pourquoi nous changeons de leader (et créons une nouvelle session pendant que nous y sommes).

ZN13
la source
1
C'est vrai, mais a-t-il une réalité avec le signal SIGHUP car je le sais, il est envoyé lorsque le terminal de contrôle est perdu
Kalu
7
Le parent obtient un SIGHUP lorsque le terminal de contrôle est fermé. L'enfant n'obtiendra pas de SIGHUP car il est dans une nouvelle session.
ZN13