如果系统杀死你的应用程序(如在分段故障的情况下),它设置退出代码128 +信号 - 看到Linux的signal(7) manpage的信号值。
此外,对于linux,在sysexits.h头文件中定义了几个默认退出代码,并且建议程序员使用这些常量而不是手动定义自己的值。从exit(3) manpage:
BSD试图标准化退出代码;请参阅文件。
你可以找到例如here的文件,包含的值是:
#define EX_OK 0 /* successful termination */
#define EX__BASE 64 /* base value for error messages */
#define EX_USAGE 64 /* command line usage error */
#define EX_DATAERR 65 /* data format error */
#define EX_NOINPUT 66 /* cannot open input */
#define EX_NOUSER 67 /* addressee unknown */
#define EX_NOHOST 68 /* host name unknown */
#define EX_UNAVAILABLE 69 /* service unavailable */
#define EX_SOFTWARE 70 /* internal software error */
#define EX_OSERR 71 /* system error (e.g., can't fork) */
#define EX_OSFILE 72 /* critical OS file missing */
#define EX_CANTCREAT 73 /* can't create (user) output file */
#define EX_IOERR 74 /* input/output error */
#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */
#define EX_PROTOCOL 76 /* remote error in protocol */
#define EX_NOPERM 77 /* permission denied */
#define EX_CONFIG 78 /* configuration error */
#define EX__MAX 78 /* maximum listed value */
然而,使用起来不是强制性的,您可以自由使用任何你想要的值。
一般的答案是 - 如果你的应用程序优雅地失败(即它能够处理错误并执行完成),那么它自己设置退出代码。如果应用程序被系统杀死,则系统设置退出代码。
您还可以参阅this thread了解一些其他信息。