无法找到返回代码11的含义

2024-06-24 11:35:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在写一个用python和C编写的工具,python脚本读取一个配置文件,执行一些验证,并对C程序进行多次调用。在

系统:RHE 5.7, python:2.7.6, 通用条款:4.5.2

被调用的C程序的一些参数是输入文件的路径。有一种情况是,对于多个C程序调用,输入文件路径是相同的。在本例中,只有第一次调用成功,python子进程模块返回的代码是'-11'。在

我不知道该怎么办。首先,我找不到说明'-11'作为退出状态的含义的文档。它似乎不在/usr/include/sysexits.h中的“标准”代码中。我猜代码也可以解释为0xf5或245,因为我认为退出代码是真正有符号的8位值。在

我已经在C程序的开头添加了debug,以打印出调用它时使用的参数,但是对于失败的调用没有显示任何内容。我可以理解C如何可能无法重新打开在上一次调用中读取的文件(也许),但代码甚至没有走那么远!在

那么,退出代码从哪里来?它是否来自python子进程模块用来调用C程序的(bash)环境?它是在C程序到达main之前从C运行时开始的吗?在

我想我可以通过将“loop”下移到C中来实现这一点,这样每个输入文件路径只调用一次,但这仍然不能解释这种行为。有人能解释一下我如何确定这个错误的原因吗?谢谢。在

(FWIW)从python调用:

try:
  subprocess.check_call( args )
except subprocess.CalledProcessError as e:
  print e

进入C:

^{pr2}$

错误输出:

Command '[..]' returned non-zero exit status -11

Tags: 模块文件工具代码路径程序脚本参数
1条回答
网友
1楼 · 发布于 2024-06-24 11:35:32

返回码-11表示“分段错误”。负返回码通常意味着进程被信号终止。返回码-11表示是信号11,即SIGSEGV。在

相关问题 更多 >