gpt4 book ai didi

c++ - 使用 system() 执行命令返回返回值的 256 倍 (<< 8)。这有什么意义呢?

转载 作者:行者123 更新时间:2023-11-28 00:06:42 24 4
gpt4 key购买 nike

我花了一段时间才找到与此相关的问题的解决方案:

status = system("[ -e myFile ] && exit 1 || exit 101");

if(status == 101)
{
...

返回值作为 25856(101*256(或 101 << 8))被发回。

我找到的所有答案都没有指出发生这种有效的 256 乘法的原因......

谁能给我解释一下?

谢谢!

最佳答案

就语言标准而言,system()的返回值是实现定义的。没有理由假设 system() 的返回值与运行的命令的退出状态有任何关系。

然而,对于符合 POSIX 标准的库,成功调用 system() 的返回值被定义为 wait 使用的格式(2)功能。我推测这是为了保持一致性,也可能是为了便于实现。在任何情况下,该返回值不仅包含有关退出状态的信息,还包含有关进程如何终止(正常情况下或由于信号)和其他信息的信息。在这样的系统上,人们应该通过应用 WIFEXITED() 检查进程是否正常退出。代码的宏,并通过 WEXITSTATUS() 提取退出状态本身宏。这些宏将在 sys/wait.h 中声明.

当然,这都是非常 C 风格的。其中一些可能有更像 C++ 的替代方案。

关于c++ - 使用 system() 执行命令返回返回值的 256 倍 (<< 8)。这有什么意义呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35318579/

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