Cuando un proceso se rompe, como sé, ya no se devolverá ningún resultado. Pero siempre después de romper ping
comando tenemos las estadísticas de la ejecución y, como sé, es parte de la salida.
[email protected]:~$ ping 4.2.2.4
PING 4.2.2.4 (4.2.2.4) 56(84) bytes of data.
64 bytes from 4.2.2.4: icmp_seq=1 ttl=51 time=95.8 ms
64 bytes from 4.2.2.4: icmp_seq=2 ttl=51 time=92.3 ms
^C
--- 4.2.2.4 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 92.321/94.052/95.783/1.731 ms
[email protected]:~$
¿Cómo funciona?
Respuesta aceptada:
Ctrl +C hace que el terminal envíe SIGINT al grupo de procesos en primer plano. Un proceso que recibe SIGINT puede hacer cualquier cosa, incluso puede ignorar la señal. Una reacción común a SIGINT es salir con gracia, es decir, después de limpiar, etc.
Tu ping
simplemente está diseñado para imprimir estadísticas sobre SIGINT y luego para salir.
Es posible que otras herramientas no salgan de SIGINT en absoluto. P.ej. un comportamiento habitual de un shell interactivo (mientras no ejecuta un comando) es borrar su línea de comando y volver a dibujar el aviso.
SIGINT no es la única señal diseñada para terminar comandos. Ver el manual (man 7 signal
), hay muchas señales cuya acción por defecto es terminar el proceso. kill
envía SIGTERM por defecto. SIGTERM no es SIGINT. Ambos pueden ser ignorados. SIGKILL no se puede capturar, bloquear ni ignorar, pero debería ser tu última opción.