Anwendungsfall der Bereitstellung einer dateiähnlichen API für Terminal/Konsole

Anwendungsfall der Bereitstellung einer dateiähnlichen API für Terminal/Konsole

Es wurde erklärt indieser Stack Overflow-Threaddass jedes logische Terminal ein „Pseudo-Terminal“ hat und dass das Schreiben auf eines:

$ cat some-file.txt > /dev/ttys002

bewirkt, dass die Daten in diesem Terminalfenster angezeigt werden. Was ist der Grund für die Bereitstellung einer dateiähnlichen API für Terminalfenster? Gibt es einen Anwendungsfall, in dem dies hilfreich ist?

Bis hierwörtlich kopiert.

Es ist nicht auf Pseudoterminals beschränkt, sondern steht zur Verfügung für/dev/tty*sowie.

Antwort1

Die meisten Hardwaregeräte bieten eine dateiähnliche API. Dies wird getan, weil es sowohl das Design des Betriebssystems als auch das Design von Anwendungen vereinfacht. Das Betriebssystem muss nur über eine Datei-API verfügen und nicht über eine separate Terminal-API und eine separate Festplatten-API und eine separate Sound-API usw. Anwendungen, die keine für eine bestimmte Art von Hardware spezifischen Funktionen verwenden, können die Datei-API verwenden, ohne sich darum zu kümmern, ob sie auf eine normale Datei oder ein Hardwaregerät zugreifen.

Viele Hardwaregeräte verfügen über Funktionen, die gerätespezifisch sind. Anwendungen können diese Funktionen aufrufen überioctl. Manche Hardware wird nicht als Datei angezeigt, da Sie nicht einfach einen Bytestrom von ihr lesen oder schreiben können. Beispielsweise stellt Linux Netzwerkschnittstellen nicht als Gerätedateien bereit, da Netzwerkschnittstellen mit Paketen und nicht mit einzelnen Bytes arbeiten.

Historisch gesehen waren Terminals Hardwaregeräte. Heutzutage werden die meisten Terminals von Emulatoren bereitgestellt, entweder in einer grafischen Umgebung oder über das Netzwerk. Trotzdem erscheinen selbst Pseudoterminals wie Hardwaregeräte, da der Kernel eine spezielle Verarbeitung enthält, um zu verfolgen, welche Prozesse auf welchem ​​Terminal ausgeführt werden.

Auf jeder Unix-Variante/dev/ttybedeutet „das aktuelle Terminal für diesen Prozess“. Mit anderen Worten, wenn ein Prozess diese Datei öffnet, bezeichnet es das Terminal des Prozesses.Steuerterminal). Dadurch kann ein Prozess über sein Terminal interagieren, selbst wenn seine Standard-Eingabe- und -Ausgabedeskriptoren umgeleitet wurden.

Jedem Terminal ist eine Gerätedatei zugeordnet, die entweder ein Hardwareterminal (tty, z. B. /dev/tty1, /dev/tty2, … für virtuelle Konsolen im Textmodus unter Linux oder /dev/ttyS0, … für serielle Schnittstellen unter Linux) oder ein emuliertes Terminal (pty, kurz für Pseudoterminal; /dev/pts/NUMBERunter Linux) ist. Dies ist die Datei, über die Prozesse Daten mit dem Terminaltreiber oder Emulator austauschen.

Das liegt daran, dass Terminals Dateien sind, mit denen Sie Anwendungen ausführen und deren Ausgabe auf dem Terminal anzeigen können. Wenn Sie ein Programm in der Befehlszeile ausführen, wird die Ausgabe standardmäßig an das Terminal gesendet, Sie können sie jedoch in eine Datei umleiten.

verwandte Informationen