GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuándo es útil setsid() o por qué necesitamos agrupar procesos en Linux?

Una sesión es un conjunto de procesos que comparte un terminal de control. setsid es útil cuando desea iniciar una nueva sesión, porque ha comenzado a conectarse a una nueva terminal, como cuando inicia un shell dentro de un emulador de terminal, o desea un demonio (que no desea asociarse con una terminal de control).

La mejor explicación que conozco de estos aspectos está en R.W. Stevens Programación avanzada en el entorno Unix .


Why do we need to group processes? Considere la situación en la que desea cerrar limpiamente, y eso incluye enviar una señal a sus hijos. Hay una condición de raza inherente:no se ha recibido un SIGCHLD, por lo que sabe que el niño todavía está vivo. Así que envías una señal. Pero el elemento secundario finaliza antes de que se envíe la señal y se inicia otro proceso (no relacionado) que obtiene el mismo pid que el elemento secundario al que se envió la señal. La señal luego va al nuevo proceso no relacionado. Esto es malo. Entonces, en lugar de enviar una señal a pids específicos, envía una señal al grupo de procesos. Cuando el niño muere y comienza un nuevo proceso con el pid original, el nuevo proceso no parte del grupo de procesos y se evita el problema descrito anteriormente.


Linux
  1. 30 ejercicios de procesos de Linux para administradores de sistemas

  2. ¿Por qué Signint no se propaga al proceso secundario cuando se envía a su proceso principal?

  3. Linux:¿puede Ctrl+c enviar la señal Signint a varios procesos?

  4. UNIX/Linux:3 Maneras de Enviar Señal a Procesos

  5. Fundamentos de señales de Linux - Parte I

Comando Ps en Linux (Lista de Procesos)

Cómo matar procesos Zombie en Linux

Supervisión de procesos en Linux

Comandos para la Gestión de Procesos en Linux

Cómo enviar procesos a segundo plano en Linux

¿Qué es un proceso detenido en Linux?