如何判断一个程序是否与子进程崩溃?
我的应用程序会创建一些子进程。通常情况下,这些进程运行完毕后会正常结束,但有时候它们会崩溃。
我现在使用的是Python的subprocess模块来创建这些子进程。我通过调用Popen.poll()
方法来检查子进程是否崩溃。不幸的是,由于在崩溃时我的调试器是开启的,所以这个方法没有返回我预期的结果。
我希望能够看到调试窗口(不想关闭它),同时还能够在Python代码中检测到进程是否崩溃。
有没有办法做到这一点呢?
3 个回答
0
需要考虑的事项:
可以使用subprocess.check_output()来获取你子进程的返回代码。
可以用psutil来分析进程和子进程(还有更多功能)。
可以使用threading库来监控这些子进程的状态,一旦你决定了如何处理崩溃的情况。
import psutil
myprocess = psutil.Process(process_id) # you can find your process id in various ways of your choosing
for child in myprocess.children():
print("Status of child process is: {0}".format(child.status()))
你还可以使用threading库把你的子进程放到一个单独的线程中,这样就可以和其他进程同时进行psutil的分析。
如果你发现了更多的内容,告诉我一声,我发现这篇帖子可不是偶然。
2
当你的调试工具打开时,程序还没有结束,而 subprocess
只知道一个程序是正在运行还是已经结束。所以,不能通过 subprocess
来实现这个功能。
2
我找到了解决这个问题的办法。我用了另一个问题中提供的解决方案,链接是“应用程序错误”对话框可以被禁用吗?