2024-12-02 09:32:19
0以外的数值代表什么呢
一般来说,非0值就表示错误,但要根据这个值判断具体是什么错误就比较困难了。
比较标准的方法是用系统提供的sysexits.h头文件内定义的一系列宏作为出错时的返回值,每个宏都代表不同的错误类型,具体可以参考 /usr/include/sysexits.h 内的注释。不过这个头文件似乎不能满足所有程序的需要,很多程序都没有遵守这个标准
有些程序在发生内部错误时,直接用出错的系统调用产生的错误编号(errno.h里的errno)作为返回值
有些程序会在手册或文档内专门说明返回值的意义,比如bash:
1: Catchall for general errors
2: Misuse of shell builtins (according to Bash documentation)
126: Command invoked cannot execute
127: "command not found"
128: Invalid argument to exit
128+n: Fatal error signal "n"
255: Exit status out of range (exit takes only integer args in the range 0 - 255)
还有一些程序不论执行过程中发生了什么都返回0,这个很坑爹,但也是普遍存在的情况。
2024-12-02 01:55:07