pingが終了しても出力が続くのはなぜですか?

pingが終了しても出力が続くのはなぜですか?

私が知っている限り、プロセスが中断された場合、出力は返されません。しかし、pingコマンドを削除した後は常に実行統計を取得することができ、私が知っている限り、それは出力の一部です。

amirreza@time:~$ 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
amirreza@time:~$ 

どのように動作しますか?

ベストアンサー1

Ctrl+C端末にSIGINTをフォアグラウンドプロセスグループに送信させます。 SIGINT を受け取るプロセスは何でも、シグナルを無視することもできます。 SIGINTに対する一般的な応答は、クリーンアップ後に正常に終了することです。

あなたのpingものは単にデザイン済みSIGINTの統計を印刷して終了します。

他のツールは SIGINT で終了または終了しない場合があります。たとえば、対話型シェルの一般的な動作(コマンドを実行しない場合)は、コマンドラインを消去してプロンプトを再描画することです。

SIGINT は、コマンドを終了するように設計された唯一の信号ではありません。ドキュメントを参照してください(man 7 signal)、基本操作がプロセスを終了するというシグナルがたくさんあります。killSIGTERM はデフォルトで送信されます。 SIGTERMはSIGINTではありません。どちらも無視できます。SIGKILLはキャプチャ、ブロック、または無視できません。しかし、これが最後の手段でなければなりません。

おすすめ記事