Das ^D
Zeichen (auch bekannt als \04
oder 0x4, END OF TRANSMISSION in Unicode) ist der Standardwert für den eof
speziellen Steuerzeichenparameter des Terminal- oder Pseudoterminaltreibers im Kernel (genauer gesagt der Zeilendisziplin, tty
die mit dem seriellen oder Pseudoterminal verbunden ist). tty Gerät ). Das ist die c_cc[VEOF]
von der termios
Struktur an die TCSETS bestanden / TCGETS ioctl
ein Fragen im Zusammenhang mit dem Endgerät des Fahrerverhalten zu beeinflussen.
Der typische Befehl, der diese sendet, ioctls
ist der stty
Befehl.
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 eof
Parameter ist nur relevant, wenn sich das Endgerät im icanon
Modus 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 LF
Zeichens zurückgegeben wird (standardmäßig übersetzt der Terminal-Treiber auch die CR
von 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 eof
Zeichen 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 read
auf sie wird es erhalten, ist (und es wird keine abschließenden enthält LF
Zeichen).
Wenn nun die aktuelle Zeile leer war und die Anwendung die zuvor eingegebenen Zeilen vollständig gelesen hat, read
wird 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 eof
Zeichen bezeichnet, da die Anwendung beim Senden feststellt, dass keine weiteren Eingaben verfügbar sind.
Moderne Shells versetzen das Terminal nun nicht mehr in den icanon
Modus, 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 ^D
Zeichen (oder was auch immer die Terminal - eof
Einstellung mit einigen ist) die gleiche Bedeutung (bedeuten eof
).