在Linux中,信号是进程间通讯的一种方式,它采用的是异步机制。当信号发送到某个进程中时,操作系统会中断该进程的正常流程,并进入相应的信号处理函数执行操作,完成后再回到中断的地方继续执行。需要说明的是,信号只是用于通知进程发生了某个事件,除了信号本身的信息之外,并不具备传递用户数据的功能。1 信号的...
分类:
系统相关 时间:
2014-08-21 16:30:14
阅读次数:
346
SIGCHILD只是在子进程退出的时候发送给父进程的一个信号值,这是一种异步通知父进程的方式.父进程可以捕获,忽略这个信号,默认动作是忽略此信号.常用的使用方式是,当SIGCHILD信号发生时候,主进程在SIGCHILD的信号处理函数中调用waitpid or wait来回收子进程的结束状态。但需要...
分类:
其他好文 时间:
2014-08-09 21:04:39
阅读次数:
180
2014年8月3日 信号处理程序调用过程
当一个进程接收到一个信号时,需要暂停进程执行转去执行专门的信号处理函数(如果定义了这个信号的专门处理函数的话),然后再继续执行进程代码。
所有的信号处理都是通过内核函数do_signal进行的,do_signal如果发现需要处理的信号,并且这个信号有专门的处理函数,就需要调用这个用户态的函数,这是通过handle_signal来处理的。执行信号处理函数...
分类:
系统相关 时间:
2014-08-03 20:43:15
阅读次数:
911
1.信号处理函数相关函数原型如下:#include<signal.h>
sighandler_tsignal(intsignum,sighandler_thandler);
第一参数是信号
第二个参数是信号处理器:
1.可以是SIG_DFL,信号的默认动作
2.可以是SIG_IGN,忽略该信号
3.一个带有一个整型参数的处理函数。
#include<sign..
分类:
系统相关 时间:
2014-07-31 03:13:16
阅读次数:
251
【摘要】本文分析了Linux内核对于信号的实现机制和应用层的相关处理。首先介绍了软中断信号的本质及信号的两种不同分类方法尤其是不可靠信号的原理。接着分析了内核对于信号的处理流程包括信号的触发/注册/执行及注销等。最后介绍了应用层的相关处理,主要包括信号处理函数的安装、信号的发送、屏蔽阻塞等,最后给了...
分类:
系统相关 时间:
2014-07-25 14:10:01
阅读次数:
387
信号驱动式I/O的本质就是:进程预先告知内核当某个描述符发生事件时,内核会向该进程发送SIGIO信号通知进程,进程可在信号处理函数中进行处理
进程可以通过fcntl打开O_ASYNC标志或ioctl打开FIOASYNC标志来通知内核,二者的区别是一些系统不支持fcntl,所以应尽量使用ioctl
对于TCP套接字产生SIGIO信号的条件:
1.监听套接字上有新连接请求完成
...
分类:
其他好文 时间:
2014-07-23 00:04:48
阅读次数:
223
前言
linux下可以通过信号机制来实现程序的软中断,是一个非常有用的编程方法。我们平时在程序运行的时候按下ctrl-c、ctrl-z或者kill一个进程的时候其实都等效于向这个进程发送了一个特定信号,当进程捕获到信号后,进程会被中断并立即跳转到信号处理函数。默认情况下一个程序对ctrl-c发出的信号(SIGINT)的处理方式是退出进程,所以当我们按下ctrl-c的时候就可以终止一个...
分类:
系统相关 时间:
2014-07-14 13:11:17
阅读次数:
245
以下笔记主要是关注tcp模式下memcached的启动过程。main() 设置信号处理函数为sig_handler()初始化系统设置,保存在全局变量settings里面 settings_init(); 解析启动参数,使用settings局变量保存配置根据启动参数初始化系统具体使用的hash函数,默...
分类:
其他好文 时间:
2014-07-01 00:15:08
阅读次数:
288