我正在用Python编写一个在Linux中使用闭源API的程序。 API有时会起作用,有时会出现段错误 - 也会破坏我的程序。但是,如果程序运行10秒钟,它已经过了可能会出现segfaulting并且永远运行的点(错误只发生在开头)。
我想我需要某种类型的脚本:
启动我的python程序,
等待10秒,
检查python是否仍在运行
如果它正在运行,脚本应自行结束而不结束python
如果python未运行,则重复。
这样的程序可能吗?段错也会破坏脚本吗?
答案 0 :(得分: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()
此外,由于SEGFAULT,这个过程的返回代码在完成后可能会有一些有意义的值。
答案 1 :(得分:1)
你能否在child process内隔离对这个有缺陷的API的调用?这样,您可以检查退出状态并处理Try ... Catch