您的位置: 嵌入式在线 > 技术中心 > 工程师杂谈 > 我的理解 Linux信号处理方式

我的理解 Linux信号处理方式

2008-06-16      嵌入式在线      收藏 | 打印

      以下只表个人理解,欢迎大家指教---------

      信号:就是软件中断,中断编号为int型 在系统中用宏定义成名
      作用:实现进程之间的异步通信、异常处理等
            (进程通信分同步和异步通信,如下图)

                A进程--->B进程          A进程--->B进程   
                                                                  |                       |
                                                                   V                         V
                            同步通信                             异步通信
           等到B回复后才能往后执行         不等B回复也能往后执行

      信号的产生:
                        1、终端驱程向前台信号,如 Ctrl+C
                        2、硬件中断,如被除数是0、无效内存访问
                        3、调用kill()函数向某个进程发送信号
                        4、定时器溢出等 如 alam().    
 
      处理信号的方式:   

      linux工作时可以处于用户态(user mode)和内核态(kernl mode),但是在处理信号时,必须换到krenl mode来选择处理信号的方式,处理信号的方式有:
(个人理解:它就和单片机的中断服务程序相似)

     1、忽略此信号,即不答理它
     2、注册一个函数来自理,即用户自定义(自己写个函数来处理)
     3、按系统默认处理

      例如:在执行用户程序main()时,突然来了一个信号,名为SININT,些时将产生一个中断,去执行中断服务程序,这个中断服务程序就是信号处理方式,如下图所示:

处理过程

本文来源:嵌入式在线博客    作者:micromcu
热点资讯(一周点击率)
热评博文
评一评已有 0 位网友对此文发表了看法。  我也来评一下

验证码:  看不清?换一张

 

快乐大本营
工程师之星
高福东
擅长嵌入式开发及单片机应用开发
  • 王波涛  熟悉单片机及其接口技术
  • 朱伟平  熟悉51单片机系统LCD驱动程序编写及调试。
热门招聘
论坛热贴