一尘不染

C ++中system()函数调用的返回值,用于运行Python程序

linux

我在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的处理,采用sys.exit()python程序功能的参数并system()基于python返回函数的值?


阅读 591

收藏
2020-06-07

共1个答案

一尘不染

该计划的退出代码调用可以与获取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";
}
2020-06-07