不可靠信号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不可靠信号相关的知识,希望对你有一定的参考价值。

参考技术A 4.不可靠的信号

很多人看到了不可靠的信号这一章节,就认为因为额信号会丢失所以是不可靠的,其实这么理解是不对的,不可靠的信号是指信号的行为不可靠。

信号的处理就好比现在 LZ 正在写这篇博文,忽然来了一个电话,于是打断了手头的工作,先接电话去了。

信号处理函数的执行现场不是程序员布置的,而是内核布置的,因为程序中不会有调用信号处理函数的地方。

同一个信号处理函数的执行现场会被布置在同一个地方,所以当一次信号处理函数未执行完成时再次触发了相同的信号,信号处理函数发生了第二次调用,

则第一次调用的执行现场会被覆盖。

5.可重入函数

可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。

//c code

static int tmp;

void func1(int* x, int* y)

    tmp=*x;

    *x=*y;

    *y=tmp;



void func2(int* x, int* y)

    int tmp;

    tmp=*x;

    *x=*y;

    *y=tmp;



func1是不可重入的,func2是可重入的。因为在多线程条件下,操作系统会在func1还没有执行完的情况下,切换到另一个线程中,那个线程可能再次调用func1,

这样状态就错了。

Linux 信号详解二(信号分类)

信号分类
信号分为可靠信号和不可靠信号
不可靠信号的缺点 ①:处理完信号,需要重新再注册信号;②信号可能丢失。
Linux已经对缺点①做了优化,现在的不可靠问题主要指的是信号可能丢失
信号还可以分为实时信号和非实时信号--一般不可靠信号指的是前32种信号,这32种信号已经有了预定义值,每个信号有了确定的用途及含义,并且每种信号都有各自的缺省动作
--可靠信号指的后32种信号
--非实时信号都不支持排队,都是不可靠信号;实时信号都支持排队,都是可靠信号。

 

以上是关于不可靠信号的主要内容,如果未能解决你的问题,请参考以下文章

进程与信号不可靠问题

linux kill -l 信号列表

Linux信号机制

linux下的常见信号总结

不可靠信号SIGCHLD丢失的问题

Linux下的常见信号总结