Le ^D
caractère (également appelé \04
ou 0x4, FIN DE TRANSMISSION en Unicode) est la valeur par défaut du eof
paramètre caractère de contrôle spécial du terminal ou du pilote de pseudo-terminal dans le noyau (plus précisément de la tty
discipline de ligne attachée au port série ou pseudo). appareil tty ). C'est c_cc[VEOF]
la termios
structure transmise au TCSETS / TCGETS que l' ioctl
on envoie au terminal pour influer sur le comportement du conducteur.
La commande typique qui envoie ceux-ci ioctls
est la stty
commande.
Pour récupérer tous les paramètres:
$ stty -a
vitesse 38400 bauds; les rangées 58; colonnes 191; ligne = 0;
intr = ^ C; quitter = ^ \; effacer = ^ ?; tuer = ^ U; eof = ^ D ; eol = <undef>; eol2 = <undef>; swtch = <undef>; début = ^ Q; stop = ^ S; susp = ^ Z; rprnt = ^ R; werase = ^ W; lnext = ^ V; flush = ^ O;
min = 1; temps = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon ecxo ecxo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke
Ce eof
paramètre n'est pertinent que lorsque le terminal est en icanon
mode.
Dans ce mode, le pilote de terminal (pas l'émulateur de terminal) implémente un éditeur de ligne très simple , dans lequel vous pouvez taper Backspacepour effacer un caractère, Ctrl-Upour effacer toute la ligne ... Lorsqu'une application lit à partir du terminal, elle ne voit rien jusqu'à ce que vous appuyez sur Returnà quel point les read()
rendements de la ligne complète , y compris le dernier LF
caractère (par défaut, le pilote de terminal se traduit également par l' CR
envoyé par votre terminal lors Returnde LF
).
Maintenant, si vous voulez envoyer ce que vous avez tapé jusqu'à présent sans appuyer Enter, vous pouvez entrer le eof
caractère. À la réception de ce caractère de l'émulateur de terminal, le pilote de terminal soumet le contenu actuel de la ligne afin que l'application qui le read
reçoit le reçoive tel quel (et n'inclura pas de LF
caractère de fin ).
Maintenant, si la ligne en cours était vide et que l'application lise intégralement les lignes entrées précédemment, le read
caractère 0 sera renvoyé.
Cela signifie la fin du fichier dans l'application (lorsque vous lisez un fichier, vous lisez jusqu'à ce qu'il ne reste plus rien à lire). C'est pourquoi il est appelé le eof
caractère, car son envoi fait en sorte que l'application constate qu'aucune autre entrée n'est disponible.
Maintenant, les shells modernes, à leur invite, ne mettent pas le terminal en icanon
mode, car ils implémentent leur propre éditeur de ligne, qui est beaucoup plus avancé que le pilote de terminal intégré. Cependant, dans leur propre éditeur de lignes , pour éviter de dérouter les utilisateurs, ils donnent au ^D
caractère (ou quel que soit le eof
réglage du terminal avec certains) la même signification (signifier eof
).