Chinaunix首页 | 论坛 | 博客
  • 博客访问: 261696
  • 博文数量: 94
  • 博客积分: 526
  • 博客等级: 中士
  • 技术积分: 687
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-09 10:02
文章存档

2014年(1)

2013年(10)

2012年(83)

分类:

2012-11-21 10:01:38

原文地址:信号知识简单梳理 作者:tiger54

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*)

 

 

阅读(492) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~