GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Ist es der Prozess, der ein steuerndes Terminal hat, oder ist es die Sitzung, die ein steuerndes Terminal hat?

Wenn wir sagen, dass ein Prozess ein steuerndes Terminal hat, meinen wir dann, dass der Prozess selbst ein steuerndes Terminal hat, oder ist es die Sitzung, zu der der Prozess gehört, die ein steuerndes Terminal hat?

Früher dachte ich, dass es die Sitzung ist, die ein steuerndes Terminal hat, aber dann habe ich Folgendes gelesen (von hier), was impliziert, dass es der Prozess ist, der ein steuerndes Terminal hat:

Eines der Attribute eines Prozesses ist sein steuerndes Terminal. Untergeordnete
Prozesse, die mit Fork erstellt wurden, erben das steuernde Terminal von
ihrem übergeordneten Prozess. Auf diese Weise erben alle Prozesse in einer Sitzung
das steuernde Terminal vom Sitzungsleiter. Ein Sitzungsleiter,
der die Kontrolle über ein Terminal hat, wird als kontrollierender
Prozess dieses Terminals bezeichnet.

Akzeptierte Antwort:

Es ist tatsächlich die Sitzung, die ein steuerndes Terminal hat

Die Einzelne UNIX-Spezifikation beschreibt die Beziehung in Bezug auf das steuernde Terminal „einer Sitzung zugeordnet“ sein. Wie weiter ausgeführt wird, hat ein steuerndes Terminal eine 1:1-Beziehung zu einer Sitzung. Es gibt „höchstens ein steuerndes Terminal“, das einer Sitzung zugeordnet ist, und „ein steuerndes Terminal ist genau einer Sitzung zugeordnet“.

Das FreeBSD Design und Implementierung book nähert sich dem etwas anders, erreicht aber denselben Punkt. Es ist nicht möglich, dass Prozesse, die dieselbe Sitzung teilen, unterschiedliche steuernde Terminals haben, noch ist es möglich, dass ein einzelnes Terminal das steuernde Terminal mehrerer Sitzungen ist.

Intern in FreeBSD funktionieren die Datenstrukturen tatsächlich so. Die Prozessstruktur hat einen Zeiger auf pgrp Struktur, die die Prozessgruppe darstellt, zu der der Prozess gehört, die wiederum auf die session zeigt -Struktur, die die Sitzung darstellt, zu der die Prozessgruppe gehört, die wiederum auf tty zeigt Struktur des steuernden Terminals für die Sitzung.

Intern in Linux sind die Dinge etwas komplexer. Jede task_struct hat eine Reihe von Zeigern auf pid Strukturen für seine Prozessgruppen-ID und Sitzungs-ID; und hat einen weiteren Zeiger auf eine signal_struct pro Prozess Struktur, die wiederum direkt auf das tty zeigt Struktur des steuernden Terminals.

Weiterführende Literatur

  • George V. Neville-Neil, Marshall Kirk McKusick und Robert N. M. Watson (2014-09-25). "Prozessmanagement". Das Design und die Implementierung des FreeBSD-Betriebssystems . Addison-Wesley Professional. ISBN 9780133761832.
  • Donald Lewine (1991). „Terminal I/O“. POSIX-Programmierhandbuch . O’Reilly Media, Inc. ISBN 9780937175736.
  • Daniel P. Bovet und Marco Cesati (2005). „Prozesse“. Den Linux-Kernel verstehen:Von E/A-Ports zum Prozessmanagement . 3. Auflage. O’Reilly Media, Inc. ISBN 9780596554910.
  • „Definitionen“. Die Basisspezifikationen der Open Group . Ausgabe 7. 2016. IEEE 1003.1:2008.
  • „Allgemeine Terminalschnittstelle“. Die Basisspezifikationen der Open Group . Ausgabe 7. 2016. IEEE 1003.1:2008.
Verwandte:Linux – Wie listet man Ordner mit Bash-Befehlen auf?
Linux
  1. Eine Anleitung zum Linux-Terminal für Anfänger

  2. Kopieren Sie Dateien im Linux-Terminal

  3. Benennen Sie eine Datei im Linux-Terminal um

  4. Verschieben Sie Dateien im Linux-Terminal

  5. Was passiert mit der Ausgabe eines Prozesses, der enteignet wurde und sein Terminal verloren hat?

Wie der Linux-Desktop gewachsen ist

Sehen Sie sich YouTube-Videos am Linux-Terminal an

Das Linux-Terminal ist kein One-Trick-Pony

Entspannen Sie am Feuer an Ihrem Linux-Terminal

So zeichnen Sie Ihre Terminalsitzung unter Linux auf

Eternal Terminal – Eine Remote-Shell, die sich automatisch wieder verbindet, ohne die Sitzung zu unterbrechen