在没有信号处理程序的情况下,SIGTERM 的行为是否与 SIGKILL 相同?

use*_*927 4 process signals

大多数 SIGTERM 和 SIGKILL 的描述都指出 SIGKILL,

与 SIGTERM 和 SIGINT 相比,[...] 无法被捕获或忽略 [...](维基百科

这是 SIGTERM 和 SIGKILL 之间的唯一区别吗?特别是,如果进程没有安装 SIGTERM 处理程序,向进程发送 SIGTERM 或 SIGKILL 之间有什么区别吗?

Ste*_*itt 5

在没有任何信号配置的情况下,SIGTERMSIGKILL实际上是等价的,至少从被杀死的进程\xe2\x80\x99s的角度来看,与默认操作是终止进程的其他信号一样,包括SIGUSR1SIGUSR2。正如ilkkachu指出的那样,父进程被告知终止子进程的信号(这就是您的 shell 区分信号的方式,并打印例如\xe2\x80\x9ctermerated\xe2\x80\x9d v. \xe2\ x80\x9用户定义的信号1\xe2\x80\x9d)。

\n\n

正如维基百科上提到的,SIGKILLcan\xe2\x80\x99t 被捕获或忽略,而SIGTERMcan; 请注意,这意味着进程\xe2\x80\x99 不需要安装处理程序即可SIGTERM生效,它可以简单地阻止它或忽略它(请参阅sighold()sigrelse()sigignore())。

\n\n

POSIX 作为信号处理背后原理的详细部分。Linuxsignal(7)手册页也详细记录了信号。

\n