Ami*_*ahi 14 process ping output
当一个进程中断时,我知道不会再返回任何输出。但总是在中断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:~$
Run Code Online (Sandbox Code Playgroud)
它是如何工作的?
Kam*_*ski 49
Ctrl+C使终端向前台进程组发送 SIGINT。收到 SIGINT 的进程可以做任何事情,它甚至可以忽略信号。对 SIGINT 的常见反应是优雅地退出,即在清理之后等。
您ping
只是设计用于在 SIGINT 上打印统计信息然后退出。
其他工具可能根本不会在 SIGINT 时退出。例如,交互式 shell(不运行命令时)的通常行为是清除其命令行并重新绘制提示。
SIGINT 不是设计用于终止命令的唯一信号。参见手册 ( man 7 signal
),有许多信号的默认操作是终止进程。kill
默认发送 SIGTERM。SIGTERM 不是 SIGINT。两者都可以忽略。SIGKILL 不能被捕获、阻止或忽略,但它应该是你最后的选择。