Cuando un líder de sesión adquiere una terminal de control, ¿cómo adquirirían también la terminal de control los otros procesos existentes en la sesión?

Cuando un líder de sesión adquiere una terminal de control, ¿cómo adquirirían también la terminal de control los otros procesos existentes en la sesión?

Supongamos que hay una sesión con múltiples procesos y sin un terminal de control.

Cuando el líder de la sesión crea una conexión con un terminal de control,

  • ¿Cómo aprenderían los otros procesos en la misma sesión que la sesión tiene un terminal de control y

  • ¿Cómo podrían hacer uso también del terminal de control?

La razón por la que tengo esta pregunta es la siguiente. Por lo general, un proceso llama setsid()para iniciar una nueva sesión y convertirse en su líder, y llama open()para conectarse a una terminal de control. Luego, el líder de la sesión pasa a fork()los procesos secundarios, y los hijos heredarán el descriptor de archivo en la terminal de control.

Entonces me pregunto qué pasa si una sesión ya tiene múltiples procesos pero no tiene una terminal de control, y luego el líder crea una conexión a una terminal de control, y luego qué pasa con los otros procesos en la sesión.

Gracias.

Respuesta1

Cualquier nuevo hijo que el líder de la sesión cree después de adquirir una terminal de control también tendrá esa terminal de control. Un terminal de control es algo que se hereda del padre.

En otras palabras: los niños existentes no se ven afectados.

información relacionada