Linux信号列表
Linux操作系统中,信号(Signal)是一种异步事件,用于通知进程发生了某些事件,例如键盘中断、进程终止、内存访问错误等。Linux支持的信号列表包括传统UNIX支持的不可靠信号(1-31)和后来扩充的可靠信号(32-63)。
不可靠信号(1-31)
1. SIGHUP:在用户终端连接结束时发出,通知同一session内的各个作业,例如登录Linux时,系统会分配给登录用户一个终端(Session)。当用户退出Linux登录时,前台进程组和后台有终端输出的进程将会收到SIGHUP信号。
2. SIGINT:程序终止(interrupt)信号,在用户键入INTR字符(通常是Ctrl-C)时发出,用于通知前台进程组终止进程。
3. SIGQUIT:和SIGINT类似,但由QUIT字符(通常是Ctrl-\)来控制。进程在因收到SIGQUIT退出时会产生core文件,在这个意义上类似于一个程序错误信号。
4. SIGILL:执行了非法指令,通常是因为可执行文件本身出现错误,或者试图执行数据段。堆栈溢出时也有可能产生这个信号。
5. SIGTRAP:由断点指令或其它trap指令产生,由debugger使用。
6. SIGABRT:调用abort函数生成的信号。
7. SIGBUS:非法地址,包括内存地址对齐(alignment)出错。例如访问一个四个字长的整数,但其地址不是4的倍数。
8. SIGFPE:在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为0等其它所有的算术错误。
9. SIGKILL:用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。
10. SIGUSR1:留给用户使用
11. SIGSEGV:试图访问未分配给自己的内存,或者试图往没有写权限的内存地址写数据。
12. SIGUSR2:留给用户使用
13. SIGPIPE:写入到一个已经关闭的pipe时发出。
可靠信号(32-63)
从上面的列表可以看出,Linux支持的信号列表非常全面,涵盖了各种可能的事件和错误类型。了解这些信号的含义和用途,对于Linux系统的管理和维护非常重要。
在实际应用中,信号可以用于各种目的,例如:
* 信号可以用于进程间通信,例如使用SIGUSR1和SIGUSR2信号来实现进程间的同步和通信。
* 信号可以用于错误处理,例如捕获SIGSEGV信号来处理内存访问错误。
* 信号可以用于进程控制,例如使用SIGKILL信号来强制结束进程的运行。
Linux信号列表提供了一种灵活和强大的机制,用于处理各种事件和错误,提高系统的稳定性和可靠性。