打印

转:Linux信号处理方式

[复制链接]
1649|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
秀才与兵|  楼主 | 2012-2-16 13:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下只表个人理解,欢迎大家指教---------      信号:就是软件中断,中断编号为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,些时将产生一个中断,去执行中断服务程序,这个中断服务程序就是信号处理方式,如下图所示:

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

141

帖子

3

粉丝