Lorsqu'un processus se casse, comme je sais qu'aucune sortie ne sera plus renvoyée. Mais toujours après avoir cassé ping
commande, nous avons les statistiques de l'exécution, et comme je le sais, cela fait partie de la sortie.
[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]:~$
Comment ça marche ?
Réponse acceptée :
Ctrl +C oblige le terminal à envoyer SIGINT au groupe de processus de premier plan. Un processus qui reçoit SIGINT peut tout faire, il peut même ignorer le signal. Une réaction courante à SIGINT est de quitter gracieusement, c'est-à-dire après avoir nettoyé, etc.
Votre ping
est simplement conçu pour imprimer les statistiques sur SIGINT puis quitter.
D'autres outils peuvent ne pas se fermer du tout sur SIGINT. Par exemple. un comportement habituel d'un shell interactif (lorsqu'il n'exécute pas de commande) consiste à effacer sa ligne de commande et à redessiner l'invite.
SIGINT n'est pas le seul signal conçu pour terminer les commandes. Voir le manuel (man 7 signal
), il existe de nombreux signaux dont l'action par défaut est de terminer le processus. kill
envoie SIGTERM par défaut. SIGTERM n'est pas SIGINT. Les deux peuvent être ignorés. SIGKILL ne peut pas être attrapé, bloqué ou ignoré, mais cela devrait être votre dernier choix.