linux 处理signal函数

在网上大家会看到可重入函数问题,由于工作中没有好好去测试过使用signal函数注册的调回函数是否有可重入问题和他的执行机制。

前两天写驱动时由于怕回调函数中做过多的处理影响到驱动,做了个简单的测试,测试环境是在linux3.0版本做的测试。

我在是驱动中使用send_sig函数向一个进程发信号并在调用send_sig后调用printk("-------------------------------\n")函数,并在回调函数中的代码入下:

sleep(10);

printf("===================\n");

函数,而main()函数中写下:

while (1)

{

    usleep(500 * 1000);

    printf("+++++++++++++++++++\n");

}

当我插上网线的拔掉网上线时终端输出:(插上网线的拔掉网线是不同的信号)

#+++++++++++++++++++

#+++++++++++++++++++

....

#-------------------------------

#-------------------------------

等10秒后

#===================

#===================

#+++++++++++++++++++

#+++++++++++++++++++

由这个测试结果发现,这个回调其实是进程自己调用的,内核只是帮做了CPU状态的保存和切换,这就不多说了,想明白的可以看一下手动写操作系统。

没有测试kill这个函数,应该也是一样原理。



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值