我正在Linux上使用代码调用system()
来运行python程序。我对这个函数调用返回的值感兴趣,以了解python程序的执行情况。
到目前为止,我找到了3个结果:
当python进程成功完成时,system()返回的值为0
当python进程在执行中被终止时(使用kill -9 pid
),system()返回的值为9
当python进程因参数不正确而自行失败时,system()返回的值为512
这与我读过的system()函数不符。
此外,被调用的python程序的代码显示,遇到任何错误时它会以sys.exit(2)
退出,而当执行成功完成时会退出sys.exit(0)
。
这两个人有没有关系?我是以错误的方式解释返回值吗?是否涉及一些Linux处理,它接受python程序的sys.exit()
函数的参数并根据它返回system()
的值?
答案 0 :(得分:12)
根据manual page,可以使用WEXITSTATUS(status)
获取您调用的程序的退出代码。另请参阅wait
的手册页。
int status = system("/path/to/my/program");
if (status < 0)
std::cout << "Error: " << strerror(errno) << '\n';
else
{
if (WIFEXITED(status))
std::cout << "Program returned normally, exit code " << WEXITSTATUS(status) << '\n';
else
std::cout << "Program exited abnormaly\n";
}