C 语言 signal() 函数用于为指定信号注册处理函数,信号到来时自动调用。
原型
void (*signal(int sig, void (*handler)(int)))(int);handler 可以是自定义函数、SIG_IGN(忽略)或 SIG_DFL(默认行为)。
参数
sig- 信号编号;handler- 处理函数指针、SIG_IGN 或 SIG_DFL。
示例
#include <stdio.h>
#include <signal.h>
void handler(int sig) {
printf("收到信号 %d,程序退出\n", sig);
exit(0);
}
int main() {
signal(SIGINT, handler); // 捕获 Ctrl+C
printf("按 Ctrl+C 试试\n");
while (1); // 死循环
return 0;
}注意事项
信号处理函数应保持简单(避免调用非异步安全函数),否则可能死锁或崩溃。