Python错误代码


问题内容

我有一个使用subprocess.Popen的python脚本来运行另一个python脚本的多个实例,每个实例都在不同的文件上运行。

我有300个文件的集合,我通过该过程运行这些文件以进行测试。每次运行时,随机数量的文件都会失败,并且总是不同的文件,因此文件本身没有问题,但是子进程在发生时以错误代码-6或-11退出。如果我使用相同的输入文件再次运行脚本,它将成功运行。

-6和-11是什么?它们可以与python异常相关吗?

编辑说明:脚本实际上是django管理命令。我尝试了很多:except子句捕获任何异常并调用sys.exit(1),所以失败发生在我的代码之外。可能在加载其他模块。我已经检查了django源代码,并且在出现任何错误的情况下,它似乎总是也调用sys.exit(1),因此-6和-11似乎来自较低级别。我认为它们可能是与比赛条件有关的错误,但是我不确定。


问题答案:

您是否从mysubproc.returncode获得退出状态?

来自http://docs.python.org/library/subprocess.html#subprocess.Popen.returncode

负值-N表示该子级已由信号N终止(仅Unix)。

信号6和11是SIGABRT(中止)和SIGSEGV(segfault)(http://linux.die.net/man/7/signal)。我的猜测是,那些其他脚本在扩展或扩展所依赖的库之一中运行不便。然后,您的构建可能会很糟糕-
如果您手动进行了重新编译,或者查看是否有更新的软件包。