zoukankan      html  css  js  c++  java
  • 信号处理篇

    参考了 wget , linux c编程实战中的bt下载软件 , nginx三者中的信号处理方法。都是采用 signal(signo,handler)

    wget,bt下载软件,使用 signal 函数

    signal(signo,signal_handler);

    signo 信号处理代码  int

    signal_handler 信号处理函数  void (*)(int)

    返回值:若成功,指向在此之前的信号处理函数的指针;若出错,SIG_ERR

    nginx,使用 sigaction 函数,实现和 signal 一样的功能

    struct sigaction sa;	//定义结构体sa
    memset(&sa, 0, sizeof(struct sigaction));	//置零sa
    sa.sa_hander = signal_hander;	//设置信号处理函数,同signal函数中的signal_handler
    sigemptyset(sa.sa_mask);	//清空sa中的信号集
    sigaction(signo, &sa, NULL);  //成功返回 0 ,出错返回 -1 
    

      

    信号处理函数

           #include <signal.h>
    
           typedef void (*sighandler_t)(int);
           sighandler_t signal(int signum, sighandler_t handler);
    
           int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
    
               struct sigaction {
                   void     (*sa_handler)(int);
                   void     (*sa_sigaction)(int, siginfo_t *, void *);
                   sigset_t   sa_mask;
                   int        sa_flags;
                   void     (*sa_restorer)(void);
               };
    

      

    信号集处理函数

           #include <signal.h>
    
           int sigemptyset(sigset_t *set);  ///初始化信号集,并清空
    
           int sigfillset(sigset_t *set);  ///初始化信号集,并使其包括所有信号
    
           int sigaddset(sigset_t *set, int signum);  ///信号集中添加信号signum
      
           int sigdelset(sigset_t *set, int signum);  ///信号集中删除信号signum
    
          ///以上四个函数,成功返回 0,出错返回 -1 int sigismember(const sigset_t *set, int signum);  ///测试信号signum是否在信号集中,在返回1,不在返回0

      

  • 相关阅读:
    Android 亮度调节
    Android异步回调中的UI同步性问题
    Java总结篇系列:Java 反射
    Node入门教程(4)第三章:第一个 Nodejs 程序
    Node入门教程(3)第二章: Node 安装
    Node入门教程(2)第一章:NodeJS 概述
    Node入门教程(1)目录
    前端面试题:JS中的let和var的区别
    IT学习逆袭的新模式,全栈实习生,不8000就业不还实习费
    11-移动端开发教程-zepto.js入门教程
  • 原文地址:https://www.cnblogs.com/jokoz/p/4717659.html
Copyright © 2011-2022 走看看