exit(-1)或者return(-1)shell得到的退出码为什么是255
下面我写了一个hello world程序,一起看看吧:
// filename: main.c #include <stdio.h> int main(void) { printf("hello wolrd!\n"); return(-); }
编译执行:gcc main.c && ./a.out
现在我们看看在当前shell中返回上一个执行过程的返回值是多少,是 “-1” 吗?
inuyasha@inuyasha-Aspire-4741:~/桌面$ gcc main.c && ./a.out
hello world!
inuyasha@inuyasha-Aspire-4741:~/桌面$ echo $"255"呢?调用一个程序, 程序退出-1, 得到结果不是“-1”吗?
以下引用自:http://www.laruence.com/2012/02/01/2503.html
这个问题简单的说, 是因为exit或者main函数中的return, 只能使用0~255之间的值. -1 的unsigned值就是255.
那么复杂点的说呢"border-bottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 0px; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 0px; padding-left: 0px; letter-spacing: normal; padding-right: 0px; border-collapse: collapse; font: 13px/23px Verdana, Arial, Helvetica, sans-serif; white-space: normal; color: rgb(17,17,17); border-top: silver 1px solid; border-right: silver 1px solid; word-spacing: 0px; padding-top: 0px; -webkit-text-stroke-width: 0px">
Exit Code Number
Meaning
Example
Comments
1
Catchall for general errors
let “var1 = 1/0″
Miscellaneous errors, such as ”divide by zero” and other impermissible operations
2
Misuse of shell builtins (according to Bash documentation)
empty_function() {}
Seldom seen, usually defaults to exit code 1
126
Command invoked cannot execute
Permission problem or command is not an executable
127
“command not found”
illegal_command
Possible problem with $PATH or a typo
128
Invalid argument to exit
exit 3.14159
exit takes only integer args in the range 0 – 255 (see first footnote)
128+n
Fatal error signal ”n”
kill -9 $PPID of script
$"Apple-converted-space"> returns 137 (128 + 9)
130
Script terminated by Control-C
Control-C is fatal error signal 2, (130 = 128 + 2, see above)
255*
Exit status out of range
exit -1
exit takes only integer args in the range 0 – 255
下一篇:iredmail下安装脚本分析(一)---get_all.sh 文件所在目录为PKGS