看看下面的C++程序:爲什麼我的shell只能檢測0到255之間的返回碼?
#include <cstdlib>
int main(){exit(-1);}
當我在運行這個程序或者zsh
,bash
,或者sh
,我得到如下結果:
$ ./test
$ echo $?
255
$
如果我運行:
#include <cstdlib>
int main(){exit(256);}
它產生以下:
$ ./test
$ echo $?
0
$
這是正常的外殼來解釋0之間的返回碼 - 255?
是否有可能產生超出此範圍的值?
在Linux中,shell是正常的。應該可以通過創建自己的操作系統來產生超出此範圍的值。 – MikeCAT
Linux通常只存儲來自返回值的低8位,並將返回狀態作爲包含返回值或信號編號的16位值進行通信。 –
使得操作系統可能從返回代碼中獲得低位,這些都是零。 –