。。。。
分类: 系统运维
2012-11-20 21:56:44
1.什么是信号
信号:是一种软件中断,终止当前正在执行的成寻转而执行程序代码。常见的信号有:段错误,总线错误,浮点数例外等。(注:/0为浮点数例外,而1.0/0为正常执行代码,其结果为无限大)。
信号具有异步性,不知道什么时候会有信号,程序中无法准确的判断。信号可以用于进程间通信,进程间可以互发信号。
信号其实就是一个整数,每个信号有自己的名字,以 SIG 开头。信号名就是整数的宏定义。
kill -l 查看所有信号。
2.信号的来源
2.1 硬件检测。
2.2 调用系统函数产生的信号。
3.信号的分类
3.1 不可靠信号:1-31的信号都为不可靠信号,有可能丢失,不支持排队,不可靠信号都是非实时的。
3.2 可靠信号: 其他信号都为可靠信号,不会丢失,支持排队,都是实时信号,在linux中34-64都是可靠信号。
发送信号的方式:
1.键盘发送 ctrl + c -> 信号2
ctrl + \ -> 信号3
ctrl + z -> 信号20
2.出错 访问内存出错 -> 段错误(即虚拟内存与物理内存映射失败) 信号11
总线错误 -> 信号7
除0 -> 信号8
3.kill 命令发送 kill -信号ID 进程号(有用户限制)
4.信号发送函数: kill,raise,alarm,sigqueue
信号集:
类型 sigset_t
函数:sigemptyset,sigfillset,sigaddset,sigdelset,sigismember
信号屏蔽:sigprocmask(int,const sigset_t*,sigset_t*)