优雅处理Segfault

bka*_*uka 8 python linux scripting segmentation-fault

我正在用Python编写一个在Linux中使用闭源API的程序.API有时会起作用,有时会出现段错误 - 也会破坏我的程序.但是,如果程序运行10秒钟,它已经过了可能会出现分段并永远运行的点(错误只发生在开头).

我想我需要一些类型的脚本:

启动我的python程序,

等了10秒,

检查python是否仍在运行

如果它正在运行,脚本应该结束自己而不结束python

如果python没有运行,那么重复一遍.

这样的程序可能吗?段错也会杀死剧本吗?

paj*_*ton 2

是的,这样的程序是完全可能的。您只需在单独的进程中运行这两个程序 - SEGFAULT 只会杀死发生它的进程。

如果您使用的是 Linux,则可以根据需要使用 bash 或 python。只需启动在单独进程中失败的脚本即可。python 中的代码可能类似于以下内容:

import subprocess
import time

start = time.clock()
ret = subprocess.call(['myprog', 'myarg0', ...])
end = time.clock()
if end - start > threshold:
    restart()
Run Code Online (Sandbox Code Playgroud)

此外,由于 SEGFAULT,此类过程的返回代码在完成后可能具有一些有意义的值。