Ben*_*ner 2 c++ return-value bit-shift
我花了一段时间才找到与此相关的问题的解决方案:
status = system("[ -e myFile ] && exit 1 || exit 101");
if(status == 101)
{
...
Run Code Online (Sandbox Code Playgroud)
返回值被发送回 25856(101*256(或 101 << 8))。
我找到的所有答案都没有表明发生这种有效的 256 乘法的原因......
有谁能为我提供解释吗?
谢谢!
就语言标准而言, 的返回值system()是实现定义的。没有理由假设 的返回值与system()所运行命令的退出状态有任何关系。
然而,对于符合 POSIX 的库,成功调用的返回值system()被定义为wait(2) 函数使用的格式。我推测这是为了一致性,也许也是为了易于实施。无论如何,该返回值不仅包含有关退出状态的信息,还包含有关进程如何终止(正常终止或由于信号终止)的信息以及其他信息。在这样的系统上,人们希望通过将WIFEXITED()宏应用于代码来检查进程是否正常退出,并通过WEXITSTATUS()宏提取退出状态本身。这些宏将在sys/wait.h.
当然,这都是非常 C 风格的。可能有一个更类似于 C++ 的替代方案。