问题描述
|
我正在用Python编写一个在Linux中使用封闭源API的程序。该API有时会起作用,有时会出现段错误-也会使我的程序崩溃。但是,如果程序运行10秒钟,则它将超过可能出现段错误并永远运行的时间(错误仅在开始时发生)。
我想我需要某种类型的脚本:
启动我的python程序,
等待十秒钟
检查python是否仍在运行
如果正在运行,则脚本应以不结束python的方式结束自身
如果python没有运行,则重复执行。
这样的程序可行吗? segfault还会杀死脚本吗?
解决方法
是的,这样的程序是完全可行的。您只需要在单独的进程中运行这两个程序-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,此类过程返回的代码可能在完成后具有一些有意义的值。,您可以在子进程中隔离对此错误API的调用吗?这样,您可以检查退出状态并在ѭ1之内处理崩溃