c ++“system”调用不会返回正确的退出代码

时间:2013-01-15 18:18:03

标签: c++ python system-calls exit-code

我有以下C ++代码

...
int res = system("python myscript.py");
if(res != 0){
    cerr << "Exit code was:" << res << endl;
}

python脚本文件以

结尾
print "This will exit with code 0"
sys.exit(0)

如果我直接运行python脚本,我会得到正确的退出代码(0)。但是,如果我通过c ++应用程序运行它,res为-1,即使正确打印了“这将以代码0退出”这一行。

奇怪的是,如果我将调用移动到C ++应用程序的执行开始,系统调用返回到python的退出代码是正确的。

一路上会导致它变得“错误”的是什么?

编辑:

在问题周围添加一些调试“cout”信息后......它消失了。看起来我有一个Heisenbug。

1 个答案:

答案 0 :(得分:2)

您确定脚本正在运行吗?

尝试

...
int res = system("/usr/bin/python /path/to/myscript.py");
if(res != 0){
    cerr << "Exit code was:" << res << endl;
}
相关问题