信号的处理方式sigaction函数
Posted 阿龙亡命天涯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了信号的处理方式sigaction函数相关的知识,希望对你有一定的参考价值。
一个进程收到一个信号的时候,可以用如下方法进行处理:
- 执行系统默认动作
对大多数信号来说,系统默认动作是用来终止该进程。 - 忽略此信号(丢弃)
接收到此信号后没有任何动作。 - 执行自定义信号处理函数(捕获)
用用户定义的信号处理函数处理该信号。
【注意】:SIGKILL 和 SIGSTOP 不能更改信号的处理方式,因为它们向用户提供了一种使进程终止的可靠方法。
sigaction函数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
void func(int signo)
printf("捕捉到信号 %d\\n",signo);
int main()
int ret=-1;
struct sigaction act;
//使用旧的信号处理函数指针
act.sa_handler=fun;
//标志位默认 默认使用旧的信号处理函数指针
act.as_flags=0;
//信号注册
ret=sigaction(SIGINT,&act,NULL);
if(-1 == ret)
perror("sigaction");
return 1;
printf("按下任意键退出,,,\\n");
while(1)
getchar();
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <signal.h>
void func1(int signo,siginfo_t* info,void* context)
printf("捕捉到信号 %d\\n",signo);
int main()
int ret=-1;
struct sigaction act;
//使用新的信号处理函数指针
act.sa_handler=fun1;
//标志指定使用新的处理函数指针
act.sa_flags=SA_SIGINFO;
//信号注册
ret=sigaction(SIGINT,&act,NULL);
if(-1 == ret)
perror("sigaction");
return 1;
printf("按下任意键退出,,,\\n");
while(1)
getchar();
效果和上面一样
如果上传少量信息,用新的
不带信息,用旧的
尽量使用sigaction函数!!!
以上是关于信号的处理方式sigaction函数的主要内容,如果未能解决你的问题,请参考以下文章