什么是 exit code
Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 424
Author 回答者: shfshanyue
exit code
代表一个进程的返回码,通过系统调用 exit_group
来触发。在 POSIX
中,0
代表正常的返回码,1-255
代表异常返回码,一般主动抛出的错误码都是 1
。
这里有一张关于异常码的附表 Appendix E. Exit Codes With Special Meanings。
异常码在操作系统中随处可见,以下是一个关于 cat
命令的异常以及它的 exit code
,并使用 strace
追踪系统调用。
$ cat a
cat: a: No such file or directory
# 使用 strace 查看 cat 的系统调用
# -e 只显示 write 与 exit_group 的系统调用
$ strace -e write,exit_group cat a
write(2, "cat: ", 5cat: ) = 5
write(2, "a", 1a) = 1
write(2, ": No such file or directory", 27: No such file or directory) = 27
write(2, "\n", 1
) = 1
exit_group(1) = ?
+++ exited with 1 +++
从系统调用的最后一行可以看出,该进行的 exit code
是 1,并把错误信息输出到 stderr
(标准错误的 fd 为2) 中
如何查看 exit code
从 strace
中可以来判断进程的 exit code
,但是不够方便过于冗余,特别身处 shell 编程环境中。
有一种简单的方法,通过 echo $?
来确认返回码
$ cat a
cat: a: No such file or directory
$ echo $?
1