1.8. Linux退出码、信号
1.8.1. 退出码(Exit Code)
| 返回值 | 描述 |
|---|---|
| 0 | 成功(Success),程序成功完成,无错误。 |
| 1 | 通用错误(General error),一般性错误,通常表示命令执行失败。 |
| 2 | 误用命令(Misuse of shell builtins),命令的用法错误,例如,缺少必要的参数。 |
| 126 | 命令不可执行(Command invoked cannot execute), 尝试运行一个不可执行的命令,例如权限不足。 |
| 127 | 命令未找到(Command not found),尝试运行一个不存在的命令或脚本。 |
| 128 | 无效的退出参数(Invalid exit argument),使用了无效的退出状态码。 |
| 130 | 进程被 Ctrl+C 终止(Script terminated by Control-C),进程接收到 SIGINT 信号(中断信号)。 |
| 137 | 进程被 kill 命令终止(Script terminated by SIGKILL),进程接收到 SIGKILL 信号,通常是使用 kill -9 终止的。 |
| 139 | 段错误(Segmentation fault),进程因段错误(非法内存访问)而终止。 |
| 143 | 进程被 SIGTERM 终止(Script terminated by SIGTERM),进程接收到 SIGTERM 信号,通常是使用 kill 终止的。 |
| 255 | 退出状态码超出范围(Exit status out of range),一般表示程序返回了超出范围的退出状态码。 |
1.8.2. 信号(Signal)
Unix 操作系统中的信号(signals)是一种软件中断,用于通知进程发生了某个特定事件。
| 信号 | 描述 |
|---|---|
| SIGHUP (1) | 挂起信号。通常用于告诉守护进程重新读取其配置文件。 |
| SIGINT (2) | 中断信号。当用户按下Ctrl+C时,发送此信号终止前台进程。 |
| SIGQUIT (3) | 退出信号。当用户按下Ctrl+\时发送,与SIGINT类似,但会产生核心转储(core dump)。 |
| SIGILL (4) | 非法指令信号。当进程尝试执行一段非法的机器语言指令时发送。 |
| SIGTRAP (5) | 跟踪/断点陷阱。主要用于调试。 |
| SIGABRT (6) | 中止信号。由abort函数发出,用于异常终止。 |
| SIGBUS (7) | 总线错误。非法地址访问,如对齐错误。 |
| SIGFPE (8) | 浮点异常。如除以零或溢出错误。 |
| SIGKILL (9) | 终止信号。强制终止进程,无法被捕获或忽略。 |
| SIGUSR1 (10), SIGUSR2 (12) | 用户自定义信号。留给用户使用,具体行为由应用定义。 |
| SIGSEGV (11) | 段错误。非法访问内存时发送。 |
| SIGPIPE (13) | 管道破裂。当进程写入无读端的管道时发送。 |
| SIGALRM (14) | 闹钟信号。由alarm系统调用产生,用于定时提醒。 |
| SIGTERM (15) | 终止信号。请求终止进程,可以被捕获,这是一种温和的终止方式。 |
| SIGCHLD (17) | 子进程状态改变信号。子进程结束时,父进程会收到此信号。 |
| SIGCONT (18) | 继续执行信号。使暂停的进程继续执行。 |
| SIGSTOP (19) | 停止执行信号。暂停进程的执行,无法被捕获或忽略。 |
| SIGTSTP (20) | 终端停止信号。当用户按下Ctrl+Z时发送,可以被捕获。 |
| SIGTTIN (21), SIGTTOU (22) | 终端输入/输出信号。后台进程尝试读写终端时发送。 |
最后更新日期:2026-07-22