附件:linux man手册关于signal的介绍 信号常常被称为“软中断”,和“中断”类似,用来通知程序发生异步事件。对信号的处理一般来说有三种方式:忽略,终止进程以及使用信号处理函数。信号处理函数的方式是从一处执行流断开,转而去运行另外的一处代码(信号处理),当处理函数返回时,继续从断开的...
分类:
系统相关 时间:
2015-06-09 00:41:07
阅读次数:
242
#include?"csapp.h"
/*编写sleep的包装函数,snooze函数,返回一个进程实际休眠了多少时间*/
unsigned?int?snooze(unsigned?int?secs)?//secs为总休眠时间
{
??unsigned?int?timeLeft;
??unsigned?...
分类:
编程语言 时间:
2015-05-24 01:25:39
阅读次数:
193
sigaction函数注册信号处理函数sigaction函数q 包含头文件q 功能:sigaction函数用于改变进程接收到特定信号后的行为。q 原型:int sigaction(int signum,const struct sigaction *act,const struct sigactio...
分类:
其他好文 时间:
2015-04-22 17:54:58
阅读次数:
133
可重入函数概念q 为了增强程序的稳定性,在信号处理函数中应使用可重入函数。q 所谓可重入函数是指一个可以被多个任务调用的过程,任务在调用时不必担心数据是否会出错。因为进程在收到信号后,就将跳转到信号处理函数去接着执行。如果信号处理函数中使用了不可重入函数,那么信号处理函数可能会修改原来进程中不应该被...
分类:
其他好文 时间:
2015-04-22 17:49:46
阅读次数:
130
预设信号处理函数
signal包的核心是使用signal.signal()函数来预设(register)信号处理函数,如下所示:
singnal.signal(signalnum, handler)
signalnum为某个信号,handler为该信号的处理函数。我们在信号基础里提到,进程可以无视信号,可以采取默认操作,还可以自定义操作。当handler为signal.SIG...
分类:
编程语言 时间:
2015-04-20 11:14:07
阅读次数:
523
首先说明我的系统,CentOS 6.6,内核为2.6.32-504.12.2.el6.i686。 当用signal对某个信号设定信号处理函数的时候,有些信号的处理函数会被重置,有些则不会,这种情况的具体说明我还没有找到,这里我就先列一下我找到的几个信号。 信号处理程序会被重置的信号: 1....
分类:
其他好文 时间:
2015-04-19 21:17:28
阅读次数:
1832
先说说线程
在多线程中,为了保证共享资源的正确性,我们常常会用到线程同步技术.
将一些敏感操作变成原子操作,保证同一时刻多个线程中只有同一个线程在执行这个原子操作。
我最常用的是互斥锁,也称独占锁。其次还有读写锁,信号量,条件变量等。
除此之外,我们在进程间通信时会用到信号,向某一个进程发送信号,该进程中设置信号处理函数,然后当该进程收到信号时,执行某些操作。
其实在线程中,也可...
分类:
编程语言 时间:
2015-04-16 17:34:25
阅读次数:
217
linux下进程终止时,内核会向父进程发送一个SIGCHLD信号,其有几个特点: 1.在一个信号处理函数运行期间,正被递交的信号是阻塞的。 2.如果一个信号在被阻塞期间产生了一次或多次,那么该信号被解阻塞之后通常只递...
分类:
其他好文 时间:
2015-04-03 00:22:33
阅读次数:
354
基于字符设备驱动之中断按键来进行分析字符设备驱动的另一种技巧:异步通知--一种可以让驱动程序变的很主动的方法
一、目标:
按键按下时,驱动层序主动通知应用程序有数据可读,这样就不用应用程序老是自己主动去读数据,专心做自己的事,该来的不用去请都会自己送上门来,瞬间就高大上起来啦
要思考的问题:
①注册信号处理函数
②谁发信号?内核驱动
③发给谁?APP。前提是App要告诉驱动它的PID
...
分类:
其他好文 时间:
2015-03-21 12:44:19
阅读次数:
121
信号用于通知进程发生了某件事情,可以由一个进程发给另一个进程,也可以由内核发个一个进程。每个信号都有一个关联的行为,可以通过sigaction函数来设置一个信号的行为,有3种选择:1、定义一个信号处理函数捕获信号,在信号发生时被调用。SIGKILL和SIGSTOP信号不能捕获信号处理函数原型:voi...
分类:
其他好文 时间:
2015-03-19 06:11:25
阅读次数:
131