C 信号处理
学习使用signal函数处理操作系统信号,如SIGINT、SIGSEGV。 · 难度:入门 · +15XP
信号处理
信号是操作系统向进程发送的异步通知,C语言通过signal.h提供信号处理功能。常见信号:SIGINT(Ctrl+C)、SIGSEGV(段错误)、SIGTERM(终止)。
注册信号处理函数
#include
void handler(int sig) {
printf("Received signal %d
", sig);
// 注意:信号处理中应避免非异步信号安全函数
}
int main() {
signal(SIGINT, handler); // 注册
while(1); // 等待信号
return 0;
}
| 信号 | 默认行为 | 说明 |
|---|---|---|
| SIGINT | 终止进程 | 用户中断 |
| SIGSEGV | 终止并转储 | 非法内存访问 |
| SIGTERM | 终止进程 | 请求终止 |
注意事项
- 信号处理函数应尽量简单(只设置标志变量)。
- 避免调用
printf等非重入函数(但教学示例中常用)。
练习提示
编写程序捕获SIGINT,询问用户是否退出,若否则继续执行。