GNU/Linux >> Tutoriels Linux >  >> Linux

Linux - Est-ce le processus qui a un terminal de contrôle, ou est-ce la session qui a un terminal de contrôle ?

Lorsque nous disons qu'un processus a un terminal de contrôle, voulons-nous dire que le processus lui-même a un terminal de contrôle, ou est-ce la session à laquelle appartient le processus qui a un terminal de contrôle ?

J'avais l'habitude de penser que c'est la session qui a un terminal de contrôle, mais j'ai lu ce qui suit (d'ici) qui implique que c'est le processus qui a un terminal de contrôle :

L'un des attributs d'un processus est son terminal de contrôle. Les processus enfants
créés avec fork héritent du terminal de contrôle de
leur processus parent. De cette manière, tous les processus d'une session
héritent du terminal de contrôle du leader de la session. Un chef de session
qui a le contrôle d'un terminal est appelé processus
de contrôle de ce terminal.

Réponse acceptée :

C'est bien la session qui a un terminal de contrôle

La spécification UNIX unique décrit la relation en termes de terminal de contrôle être « associé à une session ». Comme il le précise, un terminal de contrôle a une relation 1:1 avec une session. Il y a "au plus un terminal de contrôle" associé à une session, et "un terminal de contrôle est associé à exactement une session".

Conception et implémentation de FreeBSD livre aborde cela légèrement différemment, mais atteint le même endroit. Il n'est pas possible que des processus partageant la même session aient différents terminaux de contrôle, ni qu'un seul terminal soit le terminal de contrôle de plusieurs sessions.

En interne dans FreeBSD, c'est ainsi que fonctionnent réellement les structures de données. La structure du processus a un pointeur vers le pgrp structure représentant le groupe de processus auquel le processus appartient, qui à son tour pointe vers la session structure représentant la session à laquelle appartient le groupe de processus, qui à son tour pointe vers le tty structure du terminal de contrôle de la session.

En interne sous Linux, les choses sont légèrement plus complexes. Chaque task_struct a un ensemble de pointeurs vers pid des structures pour son ID de groupe de processus et son ID de session ; et a un autre pointeur vers un signal_struct par processus structure qui à son tour pointe directement vers le tty structure du terminal de contrôle.

Autres lectures

  • George V. Neville-Neil, Marshall Kirk McKusick et Robert N.M. Watson (2014-09-25). "La gestion des processus". La conception et la mise en œuvre du système d'exploitation FreeBSD . Addison-Wesley Professionnel. ISBN 9780133761832.
  • Donald Lewine (1991). "Terminal E/S". Guide du programmeur POSIX . O'Reilly Media, Inc. ISBN 9780937175736.
  • Daniel P. Bovet et Marco Cesati (2005). "Processus". Comprendre le noyau Linux :des ports d'E/S à la gestion des processus . 3ème édition. O'Reilly Media, Inc. ISBN 9780596554910.
  • "Définitions". Les spécifications de base du groupe ouvert . Numéro 7. 2016. IEEE 1003.1:2008.
  • "Interface terminale générale". Les spécifications de base du groupe ouvert . Numéro 7. 2016. IEEE 1003.1:2008.
En relation :Linux – Comment lister les dossiers à l'aide des commandes bash ?
Linux
  1. Comment changer la couleur de votre terminal Linux

  2. Écoutez la radio sur le terminal Linux

  3. Qu'advient-il de la sortie d'un processus qui a été désavoué et a perdu son terminal ?

  4. Comment arrêter un processus d'écran sous Linux?

  5. Trouver le processus qui utilise un certain port sous Linux

Comment le bureau Linux s'est développé

Regardez des vidéos YouTube sur le terminal Linux

Le terminal Linux n'est pas un poney à un tour

Détendez-vous au coin du feu sur votre terminal Linux

Comment enregistrer votre session de terminal sous Linux

Eternal Terminal - Un shell distant qui se reconnecte automatiquement sans interrompre la session