sigaction函数和signal函数

sigaction函数和signal函数signal和sigaction的区别:signal都是指以前的oldersignal函数,现在大多系统都用sigaction重新实现了signal函数。1.      signal在调用handler之前先把信号的handler指针恢复;sigaction调用之后不会恢复handler指针,直到再次调用sigaction修改handler指针。这样,signal就会丢失信号,而且不能处

大家好,又见面了,我是你们的朋友全栈君。

signalsigaction的区别:

signal都是指以前的older signal函数,现在大多系统都用sigaction重新实现了signal函数。

1.      signal在调用handler之前先把信号的handler指针恢复;sigaction调用之后不会恢复handler指针,直到再次调用sigaction修改handler指针。这样,signal就会丢失信号,而且不能处理重复的信号,而sigaction就可以。因为signal在得到信号和调用handler之间有个时间把handler恢复了,这样再次接收到此信号就会执行默认的handler。(虽然有些调用,在handler的以开头再次置handler,这样只能保证丢信号的概率降低,但是不能保证所有的信号都能正确处理)

2.      signal在调用过程不支持信号blocksigaction调用后在handler调用之前会把屏蔽信号(屏蔽信号中自动默认包含传送的该信号)加入信号中,handler调用后会自动恢复信号到原先的值。

3.      signal处理过程中就不能提供阻塞某些信号的功能,sigaction就可以阻指定的信号和本身处理的信号,直到handler处理结束。这样就可以阻塞本身处理的信号,到handler结束就可以再次接受重复的信号。

 

sigaction函数的功能是检查或修改(或两者)与指定信号相关联的处理动作。

         #include<signal.h>

         intsigaction(int signo, const struct sigaction* act,struct sigaction* oact) ;

其中,参数signo是要检测或修改具体动作的信号的编号数。

act指针非空,则要修改其动作。

oact指针非空,则系统返回该信号的原先动作。

此函数使用下列结构:

struct sigaction {

         void (*sa_handler)();/* addr of signal handler,or SIG_IGN, or SIG_DFL */

         sigset_t  sa_mask; /* additional signals to block */

         int sa_flags; /*signal options, Table 10-5 */

} ;

当更改信号动作时,如果sa_handler指向一个信号捕捉函数(不是常数SIGIGNSIGDFL),则sa_mask字段说明了一个信号集,在调用信号捕捉函数之前,该信号集要加到进程的信号屏蔽字中,仅当从信号捕捉函数返回时再将进程的信号屏蔽字恢复为原先值,这样,在调用信号处理程序时就能阻塞某些信号。在信号处理程序被调用时,系统建立的新信号屏蔽字会自动包括正被递送的信号。因此保证了在处理一个给定的信号时,如果这种信号再次发生,那么它会被阻塞到对前一个信号的处理结束为止。若同一种信号多次发生,通常并不将它们排队,所以如果在某种信号被阻塞时,它发生了五次,那么对这种信号解除阻塞后,其信号处理函数通常只会被调用一次。

sa_flags :信号处理选择项标志 

一旦对给定的信号设置了一个动作,那么在用sigaction改变它之前,该设置就一直有效。

 

sigaction实例请参考下一篇博客

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/141543.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 风控模型评估方法以及大数据风控模型概念

    风控模型评估方法以及大数据风控模型概念更新一下有效性指标中的区分能力指标:KS(Kolmogorov-Smirnov):KS用于模型风险区分能力进行评估,指标衡量的是好坏样本累计分部之间的差值。好坏样本累计差异越大,KS指标越大,那么模型的风险区分能力越强。KS的计算步骤如下:1.计算每个评分区间的好坏账户数。2.计算每个评分区间的累计好账户数占总好账户数比率(good%)和累计坏账户数占总坏账户数比率(bad%

    2022年6月3日
    37
  • Idea激活码最新教程2020.1.4版本,永久有效激活码,亲测可用,记得收藏

    Idea激活码最新教程2020.1.4版本,永久有效激活码,亲测可用,记得收藏Idea 激活码教程永久有效 2020 1 4 激活码教程 Windows 版永久激活 持续更新 Idea 激活码 2020 1 4 成功激活

    2025年5月23日
    4
  • 机器学习导论(张志华):多项式分布

    机器学习导论(张志华):多项式分布前言这个笔记是北大那位老师课程的学习笔记,讲的概念浅显易懂,非常有利于我们掌握基本的概念,从而掌握相关的技术。基本概念两个矩阵相似:两个矩阵特征值一样。两个矩阵合同:矩一样,就是个数一样。#高斯分布的特性知道μ和σ\mu和\sigmaμ和σ就可以确定这个分布,是它的信息量。流形学习(manifoldlearning)学习的是空间局部点之间的关系。多项式分布Themult…

    2022年10月10日
    0
  • 2018年Android SDK下载安装及配置教程

    2018年Android SDK下载安装及配置教程下载并安装Android SDK官网(可翻墙选择):http://developer.android.com/sdk/index.html不可翻墙选择:http://www.androiddevtools.cn/或者360安全卫士—360软件管家—编程开发—搜索即可。(下面以第二种方法为例进行下载)1、下载AndroidSDKTools先找到SDKTools,下载最新的版本即可。选择zip的…

    2022年7月19日
    14
  • 适配器的作用计算机网络,网络适配器的作用

    适配器的作用计算机网络,网络适配器的作用网络适配器是计算机用来联网的一种设备,也就是网卡。一般这种设备就在主板的插槽中插着,它的工作原理就是通过网络介质来传输一些数据,并转为其他的格式,使这种格式能够被其他的设备所识别。网络适配器的技术参数有很多,例如带宽、电气接口方式等。网络适配器又称网卡或网络接口卡(NIC),英文名NetworkInterfaceCard。它是使计算机联网的设备。平常所说的网卡就是将PC机和LAN连接的网络适配器。…

    2022年6月1日
    57
  • copy和deepcopy[通俗易懂]

    copy和deepcopy[通俗易懂]总结一下,如果一个集合中的元素是字符串,copy之后则是两个互不相干的新集合,内存地址也不一样,修改任意一个另一个不会做出改变,但是如果其中的元素有数组的话,那么情况就不一样了,copy后虽然集合是两个完全新的集合,但是集合中的数组指向的是同一个内存地址,在此集合中对其中的数组数据进行修改,另一个集合中的元素是数组的内容也会改变,如果想完完全全独立出来是两个独立的集合,就得使用deepcopy而不…

    2022年10月2日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号