GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿es el proceso el que tiene una terminal de control o es la sesión la que tiene una terminal de control?

Cuando decimos que un proceso tiene una terminal de control, ¿queremos decir que el proceso mismo tiene una terminal de control, o es la sesión a la que pertenece el proceso la que tiene una terminal de control?

Solía ​​pensar que es la sesión la que tiene un terminal de control, pero luego he leído lo siguiente (de aquí) que implica que es el proceso el que tiene un terminal de control:

Uno de los atributos de un proceso es su terminal de control. Los procesos secundarios
creados con bifurcación heredan el terminal de control de
su proceso principal. De esta forma, todos los procesos de una sesión
heredan el terminal de control del líder de la sesión. Un líder de sesión
que tiene el control de un terminal se denomina proceso de control
de ese terminal.

Respuesta aceptada:

De hecho, es la sesión la que tiene un terminal de control

La Especificación UNIX única describe la relación en términos del terminal de control estar “asociado a una sesión”. Como continúa especificando, una terminal de control tiene una relación 1:1 con una sesión. Hay "como máximo un terminal de control" asociado con una sesión, y "un terminal de control está asociado con exactamente una sesión".

El diseño e implementación de FreeBSD El libro aborda esto de manera ligeramente diferente, pero llega al mismo lugar. No es posible que los procesos que comparten la misma sesión tengan diferentes terminales de control, ni que un único terminal sea el terminal de control de varias sesiones.

Internamente en FreeBSD, así es como funcionan realmente las estructuras de datos. La estructura del proceso tiene un puntero al pgrp estructura que representa el grupo de procesos al que pertenece el proceso, que a su vez apunta a la session estructura que representa la sesión a la que pertenece el grupo de procesos, que a su vez apunta al tty estructura del terminal de control de la sesión.

Internamente en Linux, las cosas son un poco más complejas. Cada task_struct tiene un conjunto de punteros a pid estructuras para su ID de grupo de procesos e ID de sesión; y tiene otro puntero a un signal_struct por proceso estructura que a su vez apunta directamente al tty estructura del terminal de control.

Lecturas adicionales

  • George V. Neville-Neil, Marshall Kirk McKusick y Robert N. M. Watson (2014-09-25). "Gestión de proceso". El diseño e implementación del sistema operativo FreeBSD . Addison Wesley Professional. ISBN 9780133761832.
  • Donald Lewine (1991). “Terminal E/S”. Guía para programadores de POSIX . O'Reilly Media, Inc. ISBN 9780937175736.
  • Daniel P. Bovet y Marco Cesati (2005). “Procesos”. Comprender el kernel de Linux:desde los puertos de E/S hasta la gestión de procesos . 3ra edición. O'Reilly Media, Inc. ISBN 9780596554910.
  • “Definiciones”. Especificaciones básicas de Open Group . Edición 7. 2016. IEEE 1003.1:2008.
  • “Interfaz de terminal general”. Especificaciones básicas de Open Group . Edición 7. 2016. IEEE 1003.1:2008.
Relacionado:Linux:¿cómo enumerar carpetas usando comandos bash?
Linux
  1. Una guía de la terminal de Linux para principiantes

  2. Cómo cambiar el color de tu terminal Linux

  3. Escuche la radio en la terminal Linux

  4. ¿Cómo detener un proceso de pantalla en Linux?

  5. Encontrar el proceso que está usando un determinado puerto en Linux

Cómo ha crecido el escritorio de Linux

Mira videos de YouTube en la terminal de Linux

La terminal de Linux no es un pony de un solo truco

Relájate junto al fuego en tu terminal Linux

Cómo grabar su sesión de terminal en Linux

Eternal Terminal:un shell remoto que se vuelve a conectar automáticamente sin interrumpir la sesión