王保明老师Linux学习笔记---------信号----signal()函数使用实例

本文深入解析了Linux环境下信号处理机制,详细介绍了如何注册信号处理函数,并通过实例展示了当不同信号(如SIGINT和SIGQUIT)发生时,handler()函数是如何被Linux内核自动调用的。
信号编程实例:


#include<string.h>
#include<stdio.h>
#include<errno.h>
#include<signal.h>


void handler(int num)
{
printf("recv num:%d \n",num);
if(num==SIGQUIT)//这个函数的参数是一个信号值,是由终端发送给内核,然后内核传递给进程的handler()函数。

{
exit(0);
}
else if(num==SIGINT)
{
//当SIGINT信号发生时,。。。。。


}



}


//信号异步通知事件。。。。。(我的应用程序dm01)可以随时被信号机制中断
//如果我写了一个信号处理函数handler
//那么当信号发生时,会自动调用我写的信号处理函数


void main()
{
//注册一个信号
//SIGINT 是Ctrl +c  会产生2号信号,。。中断应用程序

signal(SIGINT,handler);//注册了一个SIGINT信号,和该信号处理函数
signal(SIGQUIT,handler);//再次注册了一个SIGQUIT信号,和他的处理函数

while(1)
{
pause();
}
printf("main ...begin\n");


}


//请问,当信号发生时,handler()函数是被谁调用的???


//当信号发生时,这个函数 是被Linux内核调用的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值