Linux信号详解:传统与实时信号列表

需积分: 50 4 下载量 57 浏览量 更新于2024-09-09 收藏 37KB DOC 举报
于同一个Session。当用户通过logout或者其他方式断开与终端的连接时,SIGHUP信号会被发送给Session的控制进程,通常是shell。这个信号的默认动作是终止进程,除非进程已经捕获并处理了这个信号。 2)SIGINT SIGINT信号是由用户按下Ctrl+C组合键产生的,用于中断正在执行的命令或程序。它通常被用来强制停止当前前台进程,如果进程没有适当地处理这个信号,它将被终止。 3)SIGQUIT SIGQUIT信号是通过Ctrl+\组合键触发的,它的作用类似于SIGINT,但同时还会生成一个核心转储(core dump),这对于调试程序的崩溃非常有用,因为它记录了程序崩溃时的内存状态。 4)SIGILL SIGILL信号表示非法指令,当进程尝试执行无效的机器指令,比如非法地址、特权指令或者浮点运算在没有浮点硬件支持的CPU上等,系统会发送这个信号。 5)SIGTRAP SIGTRAP信号主要用于调试,当程序执行到断点或者由调试器触发时,会收到这个信号。 6)SIGABRT SIGABRT信号通常由程序调用abort()函数时产生,表示程序遇到了不可恢复的错误,需要终止运行。 7)SIGBUS SIGBUS信号在访问内存时发生错误,如试图访问不存在的内存地址或对对齐错误的数据进行操作时发出。 8)SIGFPE SIGFPE信号在执行算术运算时出现错误,如除以零、浮点溢出或非法运算等。 9)SIGKILL SIGKILL信号是强制杀掉进程的最强烈的手段,无法被捕获、忽略或重定向。一旦进程收到这个信号,它必须立即停止执行并退出。 10)SIGUSR1 和 SIGUSR2 SIGUSR1 和 SIGUSR2 是用户自定义信号,可以由应用程序自己定义其含义和处理方式。 11)SIGSEGV SIGSEGV信号在程序试图访问未映射的内存区域或执行其他非法内存操作时产生,通常导致段错误。 12)SIGPIPE SIGPIPE信号发生在进程向一个已关闭或者无读端的管道、套接字或其他流式接口写入数据时。 13)SIGALRM SIGALRM信号由alarm()函数设置的定时器超时时触发,常用于实现程序的定时功能。 14)SIGTERM SIGTERM信号是请求进程终止的一个信号,较SIGKILL温和,进程可以捕获并执行清理工作后再退出。 15)SIGCHLD 当子进程结束时,SIGCHLD信号会被发送给父进程,告诉它子进程的状态改变。 16~31的信号各有其特定用途,例如控制进程暂停和继续(SIGSTOP, SIGCONT),终端控制(SIGTSTP, SIGTTIN, SIGTTOU),资源限制(SIGXCPU, SIGXFSZ),输入输出操作(SIGIO)等。32~64号信号则是实时信号,提供更好的信号处理机制,支持信号排队,避免信号丢失。 这些信号是Linux系统中进程间通信和异常处理的重要组成部分,理解和正确使用它们对于编写健壮的系统级程序至关重要。