在Linux中,可以通过编写C程序来自定义信号处理函数。以下是一个简单的示例:
1. 首先,创建一个名为`my_signal.c`的C文件,并添加以下代码:
```c
#include
#include
#include
#include
// 自定义信号处理函数
void my_signal_handler(int signum) {
printf("接收到信号 %d,执行自定义处理函数
", signum);
}
int main() {
// 注册自定义信号处理函数
signal(SIGUSR1, my_signal_handler);
printf("进程ID: %d
", getpid());
printf("等待信号...
");
// 无限循环,等待信号的到来
while (1) {
pause(); // 暂停进程,等待信号到来
}
return 0;
}
```
2. 编译并运行`my_signal.c`文件:
```bash
gcc -o my_signal my_signal.c
./my_signal
```
3. 在另一个终端窗口,使用`kill`命令发送信号给进程:
```bash
kill -s SIGUSR1 [进程ID]
```
其中`[进程ID]`是在第2步中获取的进程ID。当进程收到`SIGUSR1`信号时,它将执行自定义的信号处理函数`my_signal_handler`。