• 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;
    }
  • 相关阅读:
    JavaScript常用正則表達式
    详尽解析window.event对象
    DWR的类却无法在js里用
    javascript控制小数点精度
    49. Group Anagrams
    48. Rotate Image
    64. Minimum Path Sum
    63. Unique Paths II
    62. Unique Paths
    53. Maximum Subarray
  • 原文地址:https://www.cnblogs.com/wanghao-boke/p/11333984.html
Copyright © 2020-2023  润新知