大多数 SIGTERM 和 SIGKILL 的描述都指出 SIGKILL,
与 SIGTERM 和 SIGINT 相比,[...] 无法被捕获或忽略 [...](维基百科)
这是 SIGTERM 和 SIGKILL 之间的唯一区别吗?特别是,如果进程没有安装 SIGTERM 处理程序,向进程发送 SIGTERM 或 SIGKILL 之间有什么区别吗?
在没有任何信号配置的情况下,SIGTERM和SIGKILL实际上是等价的,至少从被杀死的进程\xe2\x80\x99s的角度来看,与默认操作是终止进程的其他信号一样,包括SIGUSR1和SIGUSR2。正如ilkkachu指出的那样,父进程被告知终止子进程的信号(这就是您的 shell 区分信号的方式,并打印例如\xe2\x80\x9ctermerated\xe2\x80\x9d v. \xe2\ x80\x9用户定义的信号1\xe2\x80\x9d)。
正如维基百科上提到的,SIGKILLcan\xe2\x80\x99t 被捕获或忽略,而SIGTERMcan; 请注意,这意味着进程\xe2\x80\x99 不需要安装处理程序即可SIGTERM生效,它可以简单地阻止它或忽略它(请参阅sighold()、sigrelse()和sigignore())。
POSIX 作为信号处理背后原理的详细部分。Linuxsignal(7)手册页也详细记录了信号。