上QQ阅读APP看书,第一时间看更新
Exit codes
Applications communicate their result to the operating system by returning a value called exit status. This is an integer value passed to the parent process when the process ends. A list of common exit codes can be found in the /usr/include/sysexits.h file, as shown 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 */
The source for this is as follows: https://elixir.bootlin.com/linux/latest/source/fs/ext4/ext4.h#L212.
The exit code of the last command is stored in the $? variable, and it can be tested in order to control the flow of the operations. A commonly used operator is && (double ampersand), which executes the next instruction only if the exit code of the first one is 0, such as stat file && echo something >> file, which appends something to a file only if it exists.