Das ^DZeichen (auch bekannt als \04oder 0x4, END OF TRANSMISSION in Unicode) ist der Standardwert für den eofspeziellen Steuerzeichenparameter des Terminal- oder Pseudoterminaltreibers im Kernel (genauer gesagt der Zeilendisziplin, ttydie mit dem seriellen oder Pseudoterminal verbunden ist). tty Gerät ). Das ist die c_cc[VEOF]von der termiosStruktur an die TCSETS bestanden / TCGETS ioctlein Fragen im Zusammenhang mit dem Endgerät des Fahrerverhalten zu beeinflussen.
Der typische Befehl, der diese sendet, ioctlsist der sttyBefehl.
So rufen Sie alle Parameter ab:
$ stty -a
Geschwindigkeit 38400 Baud; Reihen 58; Spalten 191; line = 0;
intr = ^ C; quit = ^ \; Löschen = ^ ?; kill = ^ U; eof = ^ D ; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^ Q; stop = ^ S; susp = ^ Z; rprnt = ^ R; werase = ^ W; lnext = ^ V; Flush = ^ O;
min = 1; Zeit = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr -icrnlixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Dieser eofParameter ist nur relevant, wenn sich das Endgerät im icanonModus befindet.
In diesem Modus implementiert der Terminal-Treiber (nicht der Terminal-Emulator) einen sehr einfachen Zeileneditor , in den Sie Backspaceeingeben können , um ein Zeichen Ctrl-Uzu löschen, um die gesamte Zeile zu löschen ... Wenn eine Anwendung vom Terminal-Gerät liest, sieht sie nichts bis Sie drücken, Returnan welcher Stelle die read()vollständige Zeile einschließlich des letzten LFZeichens zurückgegeben wird (standardmäßig übersetzt der Terminal-Treiber auch die CRvon Ihrem Terminal Returnan gesendeten Zeichen LF).
Wenn Sie nun das, was Sie bisher eingegeben haben, senden möchten, ohne die Taste zu drücken Enter, können Sie hier das eofZeichen eingeben . Auf dieses Zeichen aus dem Terminal - Emulator empfängt, die Terminal - Treiber tragen den aktuellen Inhalt der Linie, so dass die Anwendung tut das readauf sie wird es erhalten, ist (und es wird keine abschließenden enthält LFZeichen).
Wenn nun die aktuelle Zeile leer war und die Anwendung die zuvor eingegebenen Zeilen vollständig gelesen hat, readwird das Zeichen 0 zurückgegeben.
Dies bedeutet das Ende der Datei für die Anwendung (wenn Sie aus einer Datei lesen, lesen Sie, bis nichts mehr zu lesen ist). Aus diesem Grund wird es als eofZeichen bezeichnet, da die Anwendung beim Senden feststellt, dass keine weiteren Eingaben verfügbar sind.
Moderne Shells versetzen das Terminal nun nicht mehr in den icanonModus, da sie einen eigenen Zeileneditor implementieren, der weitaus fortschrittlicher ist als der in den Terminaltreiber integrierte. In ihrem eigenen jedoch Zeileneditor , die Benutzer nicht zu verwirren, geben sie die ^DZeichen (oder was auch immer die Terminal - eofEinstellung mit einigen ist) die gleiche Bedeutung (bedeuten eof).