Linux信号详解:控制进程的关键机制

需积分: 10 1 下载量 2 浏览量 更新于2024-10-14 收藏 3KB TXT 举报
"这篇文档是关于Linux信号的详细介绍,适合学习Linux系统编程的读者参考。在Linux环境下,信号是进程间通信的一种方式,用于通知进程发生了特定事件或异常情况。以下是一些主要的Linux信号及其用途: 1) SIGHUP(挂断):当终端关闭时,会发送此信号给该终端的所有进程,通知它们终止或重新初始化。如果进程有子进程,也会传递给子进程。 2) SIGINT(中断):由用户通过按下Ctrl+C触发,通常用来中断正在运行的命令或程序。 3) SIGQUIT(退出):与SIGINT类似,但由Ctrl+\触发,它会在进程退出时生成一个核心转储文件。 4) SIGILL(非法指令):当进程尝试执行非法指令(如无效的内存地址或未定义的指令)时,操作系统发送此信号。 5) SIGTRAP(调试陷阱):用于调试目的,由调试器触发。 6) SIGABRT(异常终止):由程序调用abort函数时触发,表示程序遇到了无法恢复的错误。 7) SIGIOT:在某些系统上,此信号等同于SIGABRT。 8) SIGBUS(访问错误):当进程试图访问内存对齐错误的数据时,如访问4字节数据的奇数地址。 9) SIGFPE(浮点异常):处理数学运算错误,如除以零、溢出或非法运算。 10) SIGKILL(杀死):强制结束进程,无法被捕获、忽略或阻止,是最高级别的停止信号。 11) SIGUSR1 和 SIGUSR2:用户自定义信号,可以自由分配用途。 12) SIGSEGV(段错误):当进程试图访问未映射的内存区域时,或者执行了无效的内存操作。 13) SIGPIPE(管道破裂):当进程试图向已关闭的管道或无读端的管道写入数据时。 14) SIGALRM(闹钟):定时器到期时发送,常用于实现超时功能。 15) SIGTERM(终止):请求进程优雅地终止,可以被捕获并处理,如清理工作、保存状态等。 16) SIGCHLD(子进程结束):当子进程结束或停止时,会通知父进程。 17) SIGCONT(继续):使停止的进程恢复执行,通常与SIGSTOP和SIGTSTP配合使用。 18) SIGSTOP(停止):强制停止进程,与SIGKILL一样无法被捕获、忽略或阻止。 19) SIGTSTP(暂停):由用户通过Ctrl+Z触发,使进程暂停,可以被继续执行。 20) SIGTTIN(后台读取):当后台进程尝试从控制终端读取输入时,会收到此信号。 21) SIGTTOU(后台写入):与SIGTTIN类似,但在后台进程尝试写入控制终端时触发。 22) SIGURG(紧急情况):用于通知进程有紧急的带外数据到达socket。 23) SIGXCPU(CPU时间限制):当进程超过其分配的CPU时间限额时发送。 24) SIGXFSZ(文件大小限制):当进程试图增长文件超过允许的最大尺寸时。 25) SIGVTALRM(虚拟时钟报警):类似于SIGALRM,但用于测量进程的虚拟时间。 26) SIGPROF( profiling 报警):与SIGALRM和SIGVTALRM类似,但用于CPU和系统调用的统计。 27) SIGWINCH(窗口大小更改):当终端窗口大小发生变化时,通知进程调整输出格式。 28) SIGIO(异步I/O):当进程的文件描述符准备好进行I/O操作时。 29) SIGPWR(电源故障):用于提示系统即将或已经经历了电源问题。 了解这些信号及其行为对于编写健壮的、响应系统的Linux应用程序至关重要。正确处理信号可以确保程序在遇到异常情况时能够优雅地恢复或终止。"