11

我正在使用system()调用运行 python 程序的代码在 Linux 上工作。我对此函数调用返回的值感兴趣,以了解 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()

4

1 回答 1

19

您调用的程序的退出代码可以根据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";
}
于 2012-06-07T11:52:26.157 回答