- En Bash, aprendí que la señal final
se puede cambiar con este documento
. Pero, de forma predeterminada, ¿cómo puedo
señalar el final de la entrada estándar? - Encontré que con cat y
chardet, sus entradas stdin pueden ser
señaladas como terminadas con Ctrl+d. Pero
creo recordar que Ctrl+d y
Ctrl+c son similares a finalizar
la ejecución de un comando en ejecución. Entonces
¿me equivoco?
Respuesta aceptada:
Ctrl+D , cuando se escribe al principio de una línea en un terminal, significa el final de la entrada. Esta no es una señal en el sentido de Unix:cuando una aplicación está leyendo desde la terminal y el usuario presiona Ctrl+D , se notifica a la aplicación que se ha llegado al final del archivo (como si estuviera leyendo un archivo y hubiera pasado el último byte).
Ctrl+C envía una señal, SIGINT. Por defecto, SIGINT (la señal de interrupción) elimina la aplicación en primer plano, pero la aplicación puede captar la señal y reaccionar de alguna manera diferente (por ejemplo, el propio shell capta la señal y aborta la línea que ha comenzado a escribir, pero no lo hace). t sale, muestra un nuevo indicador y espera una nueva línea de comando).
Puede cambiar los caracteres asociados con el fin de archivo y SIGINT con stty
comando, por ej. stty eof a
haría a
el carácter de fin de archivo y stty intr ^-
deshabilitaría el carácter SIGINT. Esto rara vez es útil.