zoukankan      html  css  js  c++  java
  • Unix系统编程()信号处理器简介

    信号处理器简介

    信号处理器程序(也称为信号捕捉器)是当指定信号传递给进程时将会调用的一个函数。这里会学习信号处理器的基本原理,后面将继续学习。

    调用信号处理器程序,可能会随时打断主程序流程;内核代表进程来调用处理器程序,当处理器返回时,主程序会在处理器打断的位置恢复执行。

    image

    虽然信号处理器程序几乎可以为所欲为,但一般而言,设计应力求简单。

    程序20-1

    #include <signal.h>
    
    static void sigHandler(int sig) {
        printf("Ouch!
    ");              /* Unsafe */
    }
    
    int main(int argc, char *argv[]) {
        int j;
    
        if( signal(SIGINT, sigHandler) == SIG_ERR)
            printf("error
    ");
    
        for(j = 0; ; j++) {
            printf("%d
    ", j);
            sleep(3);
        }
    }

    程序清单20-1所示为一个简单的信号处理器函数,由主程序为SIGINT信号而建立.当键入中断字符(通常为Control-C)时,终端驱动程序将产生该信号。处理器只是简单打印一条消息,随机返回。

    主程序会持续循环。每次迭代,程序都将递增计数器的值并将其打印出来,然后休眠几秒钟。


    内核在调用信号处理器程序时,会将引发调用的信号编号作为一个整型参数传递给处理器函数。如果信号处理器程序只捕获一种类型的信号,那么这个参数几乎无用。然而,如果安装相同的处理器来捕获不同类型的信号,那么就可以利用此参数来判定引发对外处理器调用的是何种信号。

  • 相关阅读:
    MongoDB的固定集合
    MongoDB的导入导出
    MongoDB的数据备份与恢复
    MongoDB的索引
    MongoDB简单CRUD场景
    MongoDB入门
    NOSQL概念入门
    Java静态代理和动态代理
    a=a+1背后的内存模型和CPU高速缓存
    SpringCloud的学习记录(6)
  • 原文地址:https://www.cnblogs.com/tuhooo/p/8677169.html
Copyright © 2011-2022 走看看