信号是在操作系统中用于通知进程发生某个事件的一种机制。Linux内核提供了丰富的信号处理机制,允许进程对不同的信号进行捕获、处理和响应。本文将介绍Linux内核中的信号机制,并提供相应的源代码示例。
- 信号的概念和类型
在Linux内核中,信号是一种软件中断,用于通知进程发生了某个事件。每个信号都有一个唯一的编号,它们被定义为正整数。常见的信号类型包括:
- SIGINT(2):键盘中断信号,通常由Ctrl+C发送给前台进程组。
- SIGTERM(15):终止信号,用于请求进程正常退出。
- SIGKILL(9):强制终止信号,无法被捕获或忽略,立即终止进程。
- SIGUSR1(10)和SIGUSR2(12):用户定义的信号,可以由进程使用。
- 信号处理
进程可以通过使用系统调用signal()
来设置信号处理函数。信号处理函数是一个特定的函数,用于处理接收到的信号。当进程接收到一个信号时,内核会调用相应的信号处理函数来处理该信号。
以下是一个示例,演示如何设置信号处理函数和处理SIGINT信号: