处理: 说白了就是打断进程当前操作,然后执行信号的处理函数,执行完毕后回到原来的主控流程继续运行。
处理方式:
默认处理方式:执行默认的处理方式
忽略处理方式:信号依然会注册只是处理方式变为空操作
自定义处理方式:自己定义信号处理函数,修改信号的处理函数指针
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
#include<signal.h>
void sigcb(int no)
{
printf("我今天很好,谢谢关心\n");
}
int main(int argc,char *argv[]) //运行参数个数 运行参数首地址
{
signal(SIGINT,sigcb); //自定义处理函数
while(1){
printf("今天你开心吗\n");
sleep(3);
}
return 0;
}
自定义处理方式的信号捕捉流程:
1.main–主控流程通过系统调用接口、中断、异常进入到内核空间
2.完成内核对应功能
3.返回主控流程前调用do-signal函数
4.执行自定义函数sigcb()
5.信号处理完成之后先返回内核空间查看是否还有信号待处理,没有则返回主控流程
6.返回到用户空间