- Dans Bash, j'ai appris que le signal
de fin peut être modifié par ce
document. Mais par défaut comment puis-je
signaler la fin de l'entrée stdin ? - J'ai découvert qu'avec cat et
chardet, leurs entrées stdin peuvent être
signalées comme terminées par Ctrl+d. Mais
je crois me souvenir que Ctrl+d et
Ctrl+c sont similaires à la fin
de l'exécution d'une commande en cours d'exécution. Alors
est-ce que je me trompe ?
Réponse acceptée :
Ctrl+D , lorsqu'il est tapé au début d'une ligne sur un terminal, signifie la fin de l'entrée. Ce n'est pas un signal au sens unix :lorsqu'une application lit depuis le terminal et que l'utilisateur appuie sur Ctrl+D , l'application est avertie que la fin du fichier a été atteinte (comme si elle lisait un fichier et avait passé le dernier octet).
Ctrl+C envoie un signal, SIGINT. Par défaut, SIGINT (le signal d'interruption) tue l'application de premier plan, mais l'application peut capter le signal et réagir d'une manière différente (par exemple, le shell lui-même capte le signal et interrompt la ligne que vous avez commencé à taper, mais ce n'est pas le cas t quitter, il affiche une nouvelle invite et attend une nouvelle ligne de commande).
Vous pouvez modifier les caractères associés à la fin de fichier et SIGINT avec le stty
commande, par ex. stty eof a
ferait a
le caractère de fin de fichier et stty intr ^-
désactiverait le caractère SIGINT. C'est rarement utile.