gpt4 book ai didi

c++ - 为什么系统函数在 C++ 中总是返回一个移位的退出状态?

转载 作者:行者123 更新时间:2023-12-01 12:53:12 26 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Exit Codes from system() not as expected

(3 个回答)


1年前关闭。




我想启动一个脚本并在 C++ 中获取退出状态。但我注意到系统命令的退出状态总是左移 8 位。为什么系统功能会这样做?
示例代码:

#include <iostream>

using namespace std;

int main()
{
int exit_code_0 = system("exit 0") >> 8;
int exit_code_1 = system("exit 1") >> 8;
int exit_code_2 = system("exit 2") >> 8;
int exit_code_3 = system("exit 3") >> 8;
int exit_code_4 = system("exit 4") >> 8;
int exit_code_255 = system("exit 255")>> 8;
cout<<"Exit code was: " << exit_code_0 <<", Expected: 0"<< endl;
cout<<"Exit code was: " << exit_code_1 <<", Expected: 1"<< endl;
cout<<"Exit code was: " << exit_code_2 <<", Expected: 2"<< endl;
cout<<"Exit code was: " << exit_code_3 <<", Expected: 3"<< endl;
cout<<"Exit code was: " << exit_code_4 <<", Expected: 4"<< endl;
cout<<"Exit code was: " << exit_code_255 <<", Expected: 255"<< endl;

return 0;
}
测试结果:
Exit code was: 0, Expected: 0                                                                                                                                                       
Exit code was: 1, Expected: 1
Exit code was: 2, Expected: 2
Exit code was: 3, Expected: 3
Exit code was: 4, Expected: 4
Exit code was: 255, Expected: 255

最佳答案

在 C 和 C++ 标准中,system返回实现定义的值。
在 POSIX 系统中,返回值包含不同值的组合,可以用宏提取。要获取程序的退出状态,请使用 WEXITSTATUS(return_value) ,在您的系统上定义为右移 8。低 8 位包含其他值(例如,让您确定程序是否正常退出或由于信号等)

关于c++ - 为什么系统函数在 C++ 中总是返回一个移位的退出状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62634960/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com