码迷,mamicode.com
首页 > 其他好文 > 详细

信号(二)---signal函数详解

时间:2016-10-01 19:23:29      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

前面提到了当进程收到了信号后,有三种处理信号的方法:忽略该信号;执行默认动作;捕捉该信号。
捕捉信号 的意思就是当进程收到一个信号时去执行我们指定的动作。signal 函数就是Linux系统提供用来捕捉信号的函数。
========================================================
函数原型:
技术分享
技术分享
函数参数:
  • signum:捕捉的信号
  • handler:收到信号后执行的动作,是个函数指针变量
返回值:
  • 调用失败时返回 SIG_ERR
  • 调用成功时返回 指向之前的信号处理程序的指针变量
=======================================================
signal 函数的参数handler除了可以是一个函数的地址之外,还可以是两个宏:SIG_IGN和SIG_DEL。
如果传的是 SIG_IGN,那么表示对于 signum 信号的处理方式是忽略该信号(注意不是默认动作中的忽略);SIG_IGN==(void(*)(int))1
如果传的是 SIG_DFL,那么表示对于 signum 信号的处理方式是采用默认动作。SIG_DFL==(void(*)(int))0
=====================================================
  当调用exec函数后,进程会将原来应该要捕捉的信号全部修改成为默认动作,而其余信号处理方式保持不变。之所以要这样处理是因为当调用exec函数后,原来进程的代码段、数据段以及堆栈都将会被覆盖,那么原来设置的信号处函数的地址将在exec后失去意义,不能使用。
  当使用fork创建一个子进程时,子进程会继承父进程的信号处理方式。

信号(二)---signal函数详解

标签:

原文地址:http://www.cnblogs.com/frank-yxs/p/5926127.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!