子进程崩溃后继续python执行,带有“浮点异常(核心已转储)”

时间:2020-01-23 16:53:14

标签: python python-3.x subprocess try-catch floating-point-exceptions

在我的python 3.6脚本中,我必须使用一个外部程序(二进制),该外部程序由于给定的原因目前不时发生一个已知的bug,并且崩溃,并且我的主python程序崩溃了,Floating point exception (core dumped)。 / p>

我想要的是能够捕捉和/或忽略此错误,以便我的python脚本可以继续执行。我已经知道我不能使用常规的try / catch语法,但是无论采取何种策略,我确实都需要解决此错误。但是我不知道如何。

我的代码如下:

#!/usr/bin/env python3
import subprocess

for i in range(1000):

  my_cmd = 'CALL TO PROGRAM THAT BUGS 20% OF THE TIME'
  my_process = subprocess.Popen([my_cmd], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  cmd_out = my_process.communicate()[1].decode() # this should correctly wait for termination

  # here python exits when my_cmd crashed because of FPE

  if my_process.returncode == 0:
    print('All good')
  else:
    print('Program crashed:', cmd_out) # never printed

  # here I want to be able to go to the next loop iteration and perform all 1000 iterations

在崩溃时,我得到的只是一张与此类似的印刷品:

All good
All good
All good
All good
Floating point exception (core dumped)

能否请您提供建议?

非常感谢您

0 个答案:

没有答案