Wenn ein Prozess unterbrochen wird, wird meines Wissens keine Ausgabe mehr zurückgegeben. Aber immer nach dem Brechen von ping
Befehl haben wir die Statistik der Ausführung, und wie ich weiß, ist sie Teil der Ausgabe.
[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]:~$
Wie funktioniert es?
Akzeptierte Antwort:
Strg +C bewirkt, dass das Terminal SIGINT an die Prozessgruppe im Vordergrund sendet. Ein Prozess, der SIGINT empfängt, kann alles tun, er kann das Signal sogar ignorieren. Eine übliche Reaktion auf SIGINT ist das ordnungsgemäße Beenden, d. h. nach dem Aufräumen usw.
Ihr ping
ist einfach gestaltet Statistiken nach SIGINT drucken und dann beenden.
Andere Tools werden bei SIGINT möglicherweise überhaupt nicht beendet. Z.B. Ein übliches Verhalten einer interaktiven Shell (während kein Befehl ausgeführt wird) besteht darin, ihre Befehlszeile zu löschen und die Eingabeaufforderung neu zu zeichnen.
SIGINT ist nicht das einzige Signal zum Beenden von Befehlen. Siehe Handbuch (man 7 signal
), gibt es viele Signale, deren Standardaktion darin besteht, den Prozess zu beenden. kill
sendet standardmäßig SIGTERM. SIGTERM ist nicht SIGINT. Beide können ignoriert werden. SIGKILL kann nicht gefangen, blockiert oder ignoriert werden, aber es sollte Ihre letzte Wahl sein.