我有一个python脚本,它使用subprocess.Popen来运行另一个python脚本的多个实例,每个脚本都在不同的文件上运行。
我有300个文件的集合,我通过这个过程进行测试。每次运行,随机数量的文件都会失败,总是不同的文件,所以文件本身没有任何问题,但是子进程出现时会出现错误代码-6或-11。如果我使用相同的输入文件再次运行脚本,它会成功运行。
什么是-6和-11?它们可以与python异常相关联吗?
编辑澄清:脚本实际上是django管理命令。我有一个很大的try:except子句捕获任何异常并调用sys.exit(1),所以失败发生在我的代码之外。可能在加载其他模块。我检查了django源代码,它似乎总是在发生任何错误时调用sys.exit(1),所以-6和-11似乎来自较低级别。我认为他们可能是与种族状况有关的奥运,但我不能确定。
答案 0 :(得分:8)
您是否从mysubproc.returncode获得退出状态?
来自http://docs.python.org/library/subprocess.html#subprocess.Popen.returncode:
负值-N表示 孩子被信号N终止了 (仅限Unix)。
信号6& 11是SIGABRT(abort)和SIGSEGV(segfault)(http://linux.die.net/man/7/signal)。我的猜测是,那些其他脚本遇到了扩展或扩展所依赖的库之一的问题。你可能有一个糟糕的构建 - 如果你手动重新编译或者看看是否有更新的包。