Možný duplikát:
Jaký je přesný rozdíl mezi ‚terminálem‘, ‚shell‘, ‚tty‘ a ‚console‘?
Když použiji who
, vždy vidím pts a tty příkaz, ale nikdy nechápu, jak se liší? Může mi to prosím někdo vysvětlit?
Přijatá odpověď:
tty je nativní terminálové zařízení, backend je buď hardwarově nebo emulovaný kernel.
A pty (pseudoterminální zařízení) je koncové zařízení, které je emulováno jiným programem (příklad:xterm
, screen
, nebo ssh
jsou takové programy). A bodů je podřízená část pty .
(Více informací lze nalézt v man pty
.)
Krátké shrnutí :
A pty je vytvořen procesem prostřednictvím posix_openpt()
(které obvykle otevře speciální zařízení /dev/ptmx
) a je tvořen dvojicí obousměrných znakových zařízení:
-
Hlavní část, což je deskriptor souboru získaný tímto procesem prostřednictvím tohoto volání, se používá k emulaci terminálu. Po určité inicializaci lze druhou část odemknout pomocí
unlockpt()
a master se používá k přijímání nebo odesílání znaků do této druhé části (slave). -
Slave část, která je ukotvena v souborovém systému jako
/dev/pts/x
(skutečné jméno může master získat pomocíptsname()
) se chová jako nativní terminálové zařízení (/dev/ttyx
). Ve většině případů se spustí shell, který jej používá jako ovládací terminál.