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.