我在Linux上使用system()调用运行python程序的代码进行工作。我对此函数调用返回的值感兴趣,以了解python程序执行的过程。
system()
到目前为止,我发现了3个结果:
当python进程成功完成时,system()返回的值为0
当python进程在执行中被杀死时(使用kill -9 pid),system()返回的值为9
kill -9 pid
当python进程由于参数错误而自行失败时,system()返回的值为512
这与我阅读的有关system()函数的内容不符。
此外,被调用的python程序的代码表明,sys.exit(2)遇到任何错误以及sys.exit(0)执行成功完成时,它将退出。
sys.exit(2)
sys.exit(0)
谁能把这两个联系起来?我是否以错误的方式解释了返回值?是否有涉及Linux的处理,采用sys.exit()python程序功能的参数并system()基于python返回函数的值?
sys.exit()
该计划的退出代码调用可以与获取WEXITSTATUS(status)具体根据手册页。另请参见手册页wait。
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"; }