我确实读到睡眠无法处理任何信号。所以在我看来,当我发送SIGTERM
给它时,它应该忽略它。
sleep 10000 &
26322
kill -s SIGTERM 26322
[1]+ Exited sleep 1000
为什么睡眠被杀死?毕竟,它没有安装任何信号处理程序。
答案1
如果没有提及任何其他内容,未安装信号处理程序或显式忽略信号的程序将采取默认操作。
收到信号后的默认操作TERM
是退出进程。
sleep
特别是对于实用程序,POSIX 规范中明确提到的唯一信号是ALRM
信号,它将导致进程以零退出状态(“成功”)退出。sleep
也可以选择忽略ALRM
或采取默认操作。对于所有其他信号,将采取默认操作。