2010-09-16 79 views

回答

2

那么,你如何区分卡住的进程和需要比平常花费更长时间才能完成的进程?简短的回答是:不,您无法检测到您的孩子进程是否卡住了。

我想说,为了能够检测到这种情况,您需要与进程进行某种持续的通信(例如查看日志文件,IPC或类似文件)。基于这种沟通,您可能能够判断何时以及是否有进程停滞。

+0

如何在嵌套子进程中使用通信?我在子进程中选择某个模块的原因是它依次使它自己的子进程。 – sultan 2010-09-16 07:14:32

+2

每个进程都有一个父进程,嵌套子进程有其父进程。如答复中所述创建管道(IPC)。在这些进程之间写入和接收这些进程,当它们被破坏,并且无法从它们读取和写入时,可以考虑进程挂起。 – pyfunc 2010-09-16 07:27:10

+0

我从现在开始关心IPC。感谢名单! – sultan 2010-09-16 07:34:58

1

我想,你在问,你如何在运行时发现子进程是否挂起。你不能轻易说出。一个过程可以做一个长时间运行的操作。上下文对于理解流程何时挂起很重要。

如果您希望某个进程对用户输入做出响应,并且长时间没有响应,那么我们认为它已挂起。进程正在运行,可能正在等待一些永远不会发生的事情。 “Hung Process”是一种人性化的方式,表示一个程序已经到了死胡同,并且不再有用。

你可以有一个接一个计算素数的程序,可以运行eons并且不能被称为挂起进程。

+0

好的。首先,我们可以设置默认超时时间,然后根据需要终止进程。这是真的? – sultan 2010-09-16 07:11:50

+0

是但默认超时只能由用户在上下文中确定。正如我在我的回复中提到的那样,如果你计算大质数,它可能需要很长时间。所以上下文是根据程序在做什么以及对结论进行合理猜测来确定的。 – pyfunc 2010-09-16 07:14:28

+0

我尝试使用浏览器的核心来呈现子流程中的一些内容。 – sultan 2010-09-16 07:33:10