是时候使用SIGSTOP停止Linux进程了

时间:2011-07-01 13:18:05

标签: c linux signals

我正在停止从另一个C程序运行shell脚本。代码如下: 杀(pid,SIGSTOP); 我想知道是否存在任何与内核相关的延迟以使该shell脚本停止。

换句话说,SIGSTOP阻止另一个进程的最坏情况是什么? SIGCONT有任何类似的延迟吗?

2 个答案:

答案 0 :(得分:4)

kill是异步的。这意味着它所花费的时间总体上是无限的。例如,如果系统负载很重,则需要更长时间。即使目标进程处于空闲状态,也无法在100%的时间内工作。

您必须设计应用程序,kill可以任意长;你一定不在乎需要多长时间。如果您提供有关您为何关心的详细信息,有人可能会就如何解决这个问题给您提供建议。

答案 1 :(得分:3)

对于陷入不间断睡眠状态的进程,SIGSTOP的最坏情况是无限(无限直到系统关闭) - 通常等待永远不会完成的io,因为物理崩溃或内核空间崩溃了。< / p>

最好的情况取决于系统负载和可能的cpus数量,即使SIGSTOP完全在内核空间中处理,与大多数其他信号不同。所有信号都是异步和无限制的,但SIGSTOP对于给定进程的所有信号的延迟最低,即使它仍然是无限的:)