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

Sha*_*ala 9 c++ python linux system

我正在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()基于它的值?

Som*_*ude 14

调用程序的退出代码可以被取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";
}
Run Code Online (Sandbox Code Playgroud)