信号处理方式的主要方法有俩种:一种是使用简单的signal函数,另一种是sigaction函数
一、signal函数
使用signal()函数时,只需要指定信号类型和信号处理函数即可。
头文件:
#include <signal.h>
函数原型:
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum,sighandler_t handler);
参数:signum:指定的信号代码
handler: SIG_IGN ->忽略此信号
SIG_DFL ->采用默认方式处理信号
自定义收到指定信号的处理函数
程序demon
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
void my_function(int signal)
{
//SIGINT信号产生可以按ctrl+z实现
//SIGQUT信号产生可以按ctrl+\实现
if(signal == SIGINT)
{
printf("receive SIGINT \n");
}else if(SIGQUIT == signal){
printf("receive SIGQUT \n");
}
}
int main()
{
printf("Waiting for signal SIGINIT or SIGQUIT ...\n");
//设置信号函数
signal(SIGINT,my_function);
signal(SIGQUIT,my_function);
pause();//使函数阻塞,收到信号后继续执行
printf("收到信号");
return 0;
}
运行结果: