Linux 进程在SIGKILL之后继续运行

Linux 进程在SIGKILL之后继续运行,linux,Linux,我正在ARM Linux平台(内核2.6.18 Montavista 5)上开发一个应用程序。当我向进程发送SIGKILL(kill-9)时,应用程序将保持运行。我真的对这种情况感到困惑,因为基于我对Linux的(有限的)理解,这应该是不可能的 我注意到这种行为取决于应用程序正在做什么。我在这个应用程序中有一个处理循环,我将终端切换到原始模式。当我发出SIGKILL并且应用程序处于空闲状态时,应用程序会立即终止(如预期的那样)。当我在处理循环中时,什么都不会发生。换言之,流程不断生成数据并执行系

我正在ARM Linux平台(内核2.6.18 Montavista 5)上开发一个应用程序。当我向进程发送SIGKILL(kill-9)时,应用程序将保持运行。我真的对这种情况感到困惑,因为基于我对Linux的(有限的)理解,这应该是不可能的

我注意到这种行为取决于应用程序正在做什么。我在这个应用程序中有一个处理循环,我将终端切换到原始模式。当我发出SIGKILL并且应用程序处于空闲状态时,应用程序会立即终止(如预期的那样)。当我在处理循环中时,什么都不会发生。换言之,流程不断生成数据并执行系统调用,如strace所示


如果您能给我一些提示,我将不胜感激。

您能提供一些kill命令输出的示例吗?或者在发送SIGKILL命令后是否可以附加调试器?kill-9命令将以静默方式返回。我无法轻松附加调试器,但我通过strace运行了应用程序,但它没有显示任何内容。您是否尝试在kill之后等待一段时间?我怀疑这是因为终端速度慢(完成数据写入需要一些时间)。可能与“不间断睡眠”(某些I/O操作无法中断)有关。该进程保持运行并生成新数据。它没有被困在系统调用中,因为strace继续显示系统调用的常规流。这对我(对于python)有帮助: