在Linux中,可以使用signal
或sigaction
函数来设置信号处理器。以下是使用sigaction
函数设置信号处理器的例子:
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void handle_signal(int sig) {
printf("Caught signal %d\n", sig);
// 清理资源,停止程序等
exit(0);
}
int main() {
struct sigaction sa;
sa.sa_handler = &handle_signal;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
if (sigaction(SIGINT, &sa, NULL) == -1) {
perror("sigaction");
exit(1);
}
// 程序继续执行其他任务...
while(1) {
sleep(1);
}
return 0;
}
在这个例子中,程序设置了SIGINT信号(当用户按下Ctrl+C
时产生)的处理函数handle_signal
。当信号被捕获,它会打印出信号编号并退出程序。程序使用sigaction
函数而不是signal
函数,因为sigaction
提供了更多的灵活性和信息。