Python 无法找出-11返回码的含义

Python 无法找出-11返回码的含义,python,c,linux,Python,C,Linux,我正在编写一个用python和C编写的工具。python脚本读取一个配置文件,执行一些验证,并多次调用C程序 系统:RHE 5.7, python:2.7.6, 通用条款:4.5.2 被调用的C程序的一些参数是输入文件的路径。有一种情况,输入文件路径对于几个C程序调用是相同的。在这种情况下,只有第一个调用成功,来自python子流程模块的返回代码是'-11' 我不知道如何推进这一进程。首先,我找不到说明'-11'作为退出状态可能意味着什么的文档。它似乎不在/usr/include/sysexit

我正在编写一个用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运行时开始的吗

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

(FWIW)从python调用:

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

printf( "\n--- swizzle\n\nargs:\n" );
for ( int i = 0; i < argc; i++ ) printf( "- %s\n", argv[ i ]);

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

谢谢。这表示C程序正在运行、崩溃并且无法生成任何调试输出。事实上,如果我打印参数并始终退出,那么所有调用的输出都会出现。这只是C语言中的一个崩溃。我想我已经在python中工作了这么长时间,我已经开始期待一个完整的堆栈跟踪,每个异常都会出现。我有同样的问题,谢谢你的回答。但是,这个消极退出代码在哪里解释??我试图在谷歌上搜索,但没有找到解释这一点的文档。@yaobin
一个负值-N表示孩子被信号N终止(仅限POSIX)。
@yvesgreey谢谢你的链接!
Command '[..]' returned non-zero exit status -11