GNU/Linux >> Tutoriels Linux >  >> Linux

Quand setsid() est-il utile ou pourquoi devons-nous regrouper les processus sous Linux ?

Une session est un ensemble de processus qui partagent un terminal de contrôle. setsid est utile lorsque vous souhaitez démarrer une nouvelle session, car vous avez commencé à vous connecter à un nouveau terminal -- comme lors du démarrage d'un shell dans un émulateur de terminal -- ou vous voulez un démon (que vous ne voulez pas être associé à un terminal de contrôle).

La meilleure explication que je connaisse de ces aspects est dans R.W. Stevens Programmation avancée dans l'environnement Unix .


Why do we need to group processes? Considérez la situation dans laquelle vous souhaitez fermer proprement, et cela inclut l'envoi d'un signal à vos enfants. Il existe une condition de concurrence inhérente :un SIGCHLD n'a pas été reçu, vous savez donc que l'enfant est toujours en vie. Donc, vous envoyez un signal. Mais l'enfant se termine avant que le signal ne soit envoyé et un autre processus (indépendant) démarre et obtient le même pid que l'enfant auquel le signal a été envoyé. Le signal va ensuite au nouveau processus sans rapport. C'est mauvais. Ainsi, plutôt que d'envoyer un signal à des pid spécifiques, vous signalez le groupe de processus. Lorsque l'enfant meurt et qu'un nouveau processus commence avec le pid d'origine, le nouveau processus n'est pas partie du groupe de processus et le problème décrit ci-dessus est évité.


Linux
  1. Pourquoi mon besoin de contrôle m'a fait passer à Linux

  2. 30 exercices de processus Linux pour les administrateurs système

  3. Linux – Init Process :ancêtre de tous les processus ?

  4. Linux - Ctrl + c peut-il envoyer le signal Sigint à plusieurs processus ?

  5. Que se passe-t-il lors de l'envoi de SIGKILL à un processus zombie sous Linux ?

Commande Ps sous Linux (liste des processus)

Comment tuer les processus Zombie sous Linux

Surveillance des processus sous Linux

Commandes pour la gestion des processus sous Linux

Comment envoyer des processus en arrière-plan sous Linux

Qu'est-ce qu'un processus arrêté sous Linux ?