GNU/Linux >> Linux Esercitazione >  >> Linux

Linux:è il processo che ha un terminale di controllo o è la sessione che ha un terminale di controllo?

Quando diciamo che un processo ha un terminale di controllo, intendiamo che il processo stesso ha un terminale di controllo, o è la sessione a cui appartiene il processo che ha un terminale di controllo?

Pensavo che fosse la sessione ad avere un terminale di controllo, ma poi ho letto quanto segue (da qui) che implica che è il processo che ha un terminale di controllo:

Uno degli attributi di un processo è il suo terminale di controllo. I processi figlio
creati con fork ereditano il terminale di controllo dal
processo padre. In questo modo, tutti i processi in una sessione
ereditano il terminale di controllo dal leader della sessione. Un leader di sessione
che ha il controllo di un terminale è chiamato processo di controllo
di quel terminale.

Risposta accettata:

È davvero la sessione che ha un terminale di controllo

La Specifica UNIX singola descrive la relazione in termini di terminale di controllo essere “associato a una sessione”. Come viene specificato in seguito, un terminale di controllo ha una relazione 1:1 con una sessione. C'è "al massimo un terminale di controllo" associato a una sessione e "un terminale di controllo è associato esattamente a una sessione".

Il Progettazione e implementazione di FreeBSD il libro si avvicina a questo in modo leggermente diverso, ma raggiunge lo stesso punto. Non è possibile che i processi che condividono la stessa sessione abbiano terminali di controllo diversi, né è possibile che un singolo terminale sia il terminale di controllo di più sessioni.

Internamente in FreeBSD è così che funzionano effettivamente le strutture dati. La struttura del processo ha un puntatore a pgrp struttura che rappresenta il gruppo di processi a cui appartiene il processo, che a sua volta punta alla session struttura che rappresenta la sessione a cui appartiene il gruppo di processi, che a sua volta punta al tty struttura del terminale di controllo per la sessione.

Internamente in Linux, le cose sono leggermente più complesse. Ogni task_struct ha una serie di puntatori a pid strutture per l'ID del gruppo di processi e l'ID della sessione; e ha un altro puntatore a un signal_struct per processo struttura che a sua volta punta direttamente al tty struttura del terminale di controllo.

Ulteriori letture

  • George V. Neville-Neil, Marshall Kirk McKusick e Robert N.M. Watson (25-09-2014). "Gestione dei processi". La progettazione e l'implementazione del sistema operativo FreeBSD . Addison-Wesley professionista. ISBN 9780133761832.
  • Donald Lewine (1991). “I/O terminale”. Guida per programmatori POSIX . O'Reilly Media, Inc. ISBN 9780937175736.
  • Daniel P. Bovet e Marco Cesati (2005). "Processi". Capire il kernel Linux:dalle porte I/O alla gestione dei processi . 3a edizione. O'Reilly Media, Inc. ISBN 9780596554910.
  • “Definizioni”. Le specifiche di Open Group Base . Numero 7. 2016. IEEE 1003.1:2008.
  • "Interfaccia terminale generale". Le specifiche di Open Group Base . Numero 7. 2016. IEEE 1003.1:2008.
Correlati:Linux – Come elencare le cartelle usando i comandi bash?
Linux
  1. Una guida al terminale Linux per principianti

  2. Copia i file nel terminale Linux

  3. Rinominare un file nel terminale Linux

  4. Sposta i file nel terminale Linux

  5. Usa XMLStarlet per analizzare XML nel terminale Linux

Come è cresciuto il desktop Linux

Guarda i video di YouTube sul terminale Linux

Il terminale Linux non è un pony one-trick

Rilassati accanto al fuoco sul tuo terminale Linux

Come registrare la sessione del terminale su Linux

Eternal Terminal:una shell remota che si riconnette automaticamente senza interrompere la sessione