除了致命信号或调用“退出(2)”之外,Linux进程是否会死于其他机制?

除了致命信号或调用“退出(2)”之外,Linux进程是否会死于其他机制?,linux,linux-kernel,Linux,Linux Kernel,据我所知,Linux内核清理进程条目的唯一方法是,如果该进程执行exit2系统调用,或者它无法处理SIGSEGV、SIGABRT、SIGTERM、SIGKILL等致命信号。我知道SIGKILL无法处理,因此甚至无法实际交付给进程。。这与我在这里的想法有些相似 假设内核本身保持完整和有效,对硬件故障/设备关闭/死机/等不感兴趣,那么还有其他方法可以破坏进程吗 我们的目标是确保事故报告框架的覆盖范围——我非常确定致命信号+exit2是我唯一的死亡方式,但我想确保。是的,我相信你说的没错,这是唯一的可

据我所知,Linux内核清理进程条目的唯一方法是,如果该进程执行exit2系统调用,或者它无法处理SIGSEGV、SIGABRT、SIGTERM、SIGKILL等致命信号。我知道SIGKILL无法处理,因此甚至无法实际交付给进程。。这与我在这里的想法有些相似

假设内核本身保持完整和有效,对硬件故障/设备关闭/死机/等不感兴趣,那么还有其他方法可以破坏进程吗


我们的目标是确保事故报告框架的覆盖范围——我非常确定致命信号+exit2是我唯一的死亡方式,但我想确保。

是的,我相信你说的没错,这是唯一的可能性

您可以从wait2的文档中确认这一点。有两个相关的宏WIFEXITED和WIFSIGNALED可用于确定等待返回给定进程的原因。我没有不计算WIFSTOPPED的其他可能性,因为它用于检测挂起的进程,而不是已终止的进程


实际上,exit3不是一个系统调用,它是一个C库函数。系统调用为_exit2。exit3执行一些C清理,例如刷新stdio缓冲区和调用atexit函数,然后调用_exit2以实际退出进程。

我觉得这是正确的。唯一的例外是整个系统崩溃。