我的应用程序创建子进程。通常,这些过程运行和终止没有任何问题。但是,有时,它们会崩溃。
我目前正在使用python subprocess module来创建这些子进程。我通过调用Popen.poll()
方法检查子进程是否崩溃。不幸的是,由于我的调试器在崩溃时被激活,因此轮询不会返回预期的输出。
我希望能够看到调试窗口(不会终止它),并且仍能检测进程是否在python代码中崩溃。
有办法做到这一点吗?
答案 0 :(得分:2)
当您的调试器打开时,该过程尚未完成 - subprocess
仅知道进程是否正在运行或已完成。所以不,没有办法通过subprocess
来实现这一目标。
答案 1 :(得分:2)
我找到了解决此问题的方法。我使用了另一个问题Can the "Application Error" dialog box be disabled?
中给出的解决方案答案 2 :(得分:0)
考虑事项:
subprocess.check_output()为您的子进程返回代码
psutil for process&儿童分析(以及更多)
线程库,用于监视脚本中的这些子状态,一旦您决定了如何处理崩溃,如果需要,
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()))
您还可以使用线程库将子进程加载到单独的线程中,然后与其他进程同时执行上述psutil分析。
如果您发现更多信息,请告诉我,我发现这篇文章并非巧合。