在C ++系统()函数调用的返回值,用于运行一个Python程序(Return value of s

2019-06-25 07:32发布

我的工作在Linux上的代码,使一个system()调用运行Python程序。 我感兴趣的这个函数调用返回理解Python程序执行如何去价值。

到目前为止,我已经找到了3个结果:

  • 当蟒过程成功完成,由系统返回的值()为0

  • 当蟒进程被终止中期执行(使用kill -9 pid ),由系统返回的值()被9

  • 当蟒过程自身失败,因为不正确的参数,由系统()返回的值是512

这不适合与我读过有关系统()函数。

此外,对于被调用的Python程序代码表明,它与离开sys.exit(2)当遇到任何错误时,和sys.exit(0)当成功执行。

任何人都可以涉及这两个? 难道我解释在一个错误的方式返回值? 是否有参与一些Linux的处理,是以的参数sys.exit()的Python程序的功能和返回的值system()基础上的呢?

Answer 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";
}


文章来源: Return value of system() function call in C++, used to run a Python program