GNU/Linux >> Znalost Linux >  >> Linux

Linux – je to proces, který má řídicí terminál, nebo je to relace, která má řídicí terminál?

Když říkáme, že proces má řídící terminál, myslíme tím, že samotný proces má řídící terminál, nebo je to relace, ke které proces patří, která má řídící terminál?

Dříve jsem si myslel, že je to relace, která má řídicí terminál, ale pak jsem si přečetl následující (odtud), z čehož vyplývá, že je to proces, který má řídicí terminál:

Jedním z atributů procesu je jeho řídící terminál. Podřízené
procesy vytvořené pomocí fork dědí řídicí terminál od
svého nadřazeného procesu. Tímto způsobem všechny procesy v relaci
zdědí řídicí terminál od vedoucího relace. Vedoucí relace
, který ovládá terminál, se nazývá řídicí
proces tohoto terminálu.

Přijatá odpověď:

Je to skutečně relace, která má řídicí terminál

Specifikace jednotného systému UNIX popisuje vztah z hlediska řídícího terminálu být „spojen s relací“. Jak je dále specifikováno, řídící terminál má vztah 1:1 s relací. S relací je spojen „nejvýše jeden řídicí terminál“ a „řídící terminál je spojen přesně s jednou relací“.

FreeBSD Návrh a implementace kniha k tomu přistupuje trochu jinak, ale dosahuje stejného místa. Není možné, aby procesy, které sdílejí stejnou relaci, měly různé řídicí terminály, ani není možné, aby jeden terminál byl řídicím terminálem více relací.

Interně ve FreeBSD tak datové struktury skutečně fungují. Struktura procesu má ukazatel na pgrp struktura představující skupinu procesů, do které proces patří, což zase ukazuje na session struktura představující relaci, do které skupina procesů patří, což zase ukazuje na tty struktura řídicího terminálu pro relaci.

Interně v Linuxu jsou věci o něco složitější. Každý task_struct má sadu ukazatelů na pid struktury pro jeho ID skupiny procesů a ID relace; a má další ukazatel na signal_struct pro jednotlivé procesy struktura, která zase přímo ukazuje na tty struktura řídicího terminálu.

Další čtení

  • George V. Neville-Neil, Marshall Kirk McKusick a Robert N. M. Watson (2014-09-25). "Řízení procesu". Návrh a implementace operačního systému FreeBSD . Addison-Wesley Professional. ISBN 9780133761832.
  • Donald Lewine (1991). „Terminál I/O“. Příručka programátorů POSIX . O’Reilly Media, Inc. ISBN 9780937175736.
  • Daniel P. Bovet a Marco Cesati (2005). „Procesy“. Porozumění linuxovému jádru:Od I/O portů po správu procesů . 3. vydání. O’Reilly Media, Inc. ISBN 9780596554910.
  • „Definice“. Základní specifikace otevřené skupiny . Vydání 7. 2016. IEEE 1003.1:2008.
  • „Obecné rozhraní terminálu“. Základní specifikace otevřené skupiny . Vydání 7. 2016. IEEE 1003.1:2008.
Související:Linux – Jak vypsat seznam složek pomocí příkazů bash?
Linux
  1. Jak zastavit proces obrazovky v linuxu?

  2. Hledání procesu, který používá určitý port v Linuxu

  3. Jaká je definice relace v linuxu?

  1. Průvodce linuxovým terminálem pro začátečníky

  2. Zkopírujte soubory v terminálu Linux

  3. Přejmenujte soubor v terminálu Linux

  1. Přesunout soubory v terminálu Linux

  2. Použijte XMLStarlet k analýze XML v terminálu Linux

  3. Poslouchejte rádio na linuxovém terminálu