zoukankan      html  css  js  c++  java
  • sigaction()函数

    sigaction函数    

    修改信号处理动作(通常在Linux用其来注册一个信号的捕捉函数)

        int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);  成功:0;失败:-1,设置errno

    参数:

    act:传入参数,新的处理方式。

                  oldact:传出参数,旧的处理方式。                                                                                     【signal.c】

    struct sigaction结构体

        struct sigaction {

            void     (*sa_handler)(int);

            void     (*sa_sigaction)(int, siginfo_t *, void *);

            sigset_t   sa_mask;

            int       sa_flags;

            void     (*sa_restorer)(void);

        };

           sa_restorer:该元素是过时的,不应该使用,POSIX.1标准将不指定该元素。(弃用)

           sa_sigaction:当sa_flags被指定为SA_SIGINFO标志时,使用该信号处理程序。(很少使用) 

    重点掌握:

           ① sa_handler:指定信号捕捉后的处理函数名(即注册函数)。也可赋值为SIG_IGN表忽略 或 SIG_DFL表执行默认动作

           ② sa_mask: 调用信号处理函数时,所要屏蔽的信号集合(信号屏蔽字)。注意:仅在处理函数被调用期间屏蔽生效,是临时性设置。

           ③ sa_flags:通常设置为0,表使用默认属性。   

    /***
    signaction.c
    ***/
    #include<stdio.h>
    #include<stdlib.h>
    #include<errno.h>
    #include<unistd.h>
    #include<signal.h>
    
    void docatch(int signo)
    {
        printf("%d signal is catch
    ",signo);
    }
    
    int main()
    {
        int ret;
        struct sigaction act;
    
        act.sa_handler = docatch;
        sigemptyset(&act.sa_mask);
        sigaddset(&act.sa_mask,SIGQUIT);
        act.sa_flags = 0;
    
        ret = sigaction(SIGINT,&act,NULL);
        if(ret < 0 )
        {
            perror("sigaction error");
            exit(1);
        }
    
        while(1);
    
        return 0;
    }
  • 相关阅读:
    vcs 下使用system verilog调用c函数
    modelsim+win环境下systemverilog调用c函数
    DB2锁与隔离级别
    常用JVM命令
    [转]jvm调优-命令大全(jps jstat jmap jhat jstack jinfo)
    IntelliJ Idea 常用快捷键列表
    Pod配置PersistentVolumeClaim详解
    推荐设计模式好文
    [转载]分布式系统架构经典资料
    阿里云ECS配置iptables
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11333984.html
Copyright © 2011-2022 走看看