为什么SIGTERM能够杀死睡眠?

为什么SIGTERM能够杀死睡眠?

我确实读到睡眠无法处理任何信号。所以在我看来,当我发送SIGTERM给它时,它应该忽略它。

sleep 10000 &
26322
kill -s SIGTERM 26322
[1]+  Exited             sleep 1000 

为什么睡眠被杀死?毕竟,它没有安装任何信号处理程序。

答案1

如果没有提及任何其他内容,未安装信号处理程序或显式忽略信号的程序将采取默认操作。

收到信号后的默认操作TERM是退出进程。


sleep特别是对于实用程序,POSIX 规范中明确提到的唯一信号是ALRM信号,它将导致进程以零退出状态(“成功”)退出。sleep也可以选择忽略ALRM或采取默认操作。对于所有其他信号,将采取默认操作。

POSIX 文档sleep该实用程序

相关内容