zoukankan      html  css  js  c++  java
  • Linux的 Signal 事件用法

    # kill -l
     1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
     5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
     9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
    13) SIGPIPE     14) SIGALRM     15) SIGTERM     17) SIGCHLD
    18) SIGCONT     19) SIGSTOP     20) SIGTSTP     21) SIGTTIN
    22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
    26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO
    30) SIGPWR      31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1
    36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4  39) SIGRTMIN+5
    40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8  43) SIGRTMIN+9
    44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
    48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13
    52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9
    56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6  59) SIGRTMAX-5
    60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2  63) SIGRTMAX-1
    64) SIGRTMAX
    View Code
       //start  
       #include <signal.h>  
       #include 
    <sys/time.h>  
       #include 
    <stdio.h>  
       #include 
    <stdlib.h>  
       
    static void sighandler(int sigty);  
       
    bool goon=true;  
       
    int tot,last;  
       
    int main(){  
       
    struct itimerval v;  
       
    if (signal(SIGUSR1,sighandler)==SIG_ERR){  
       printf(
    "error on reg");  
       exit(
    1);  
       }  
       
    if (signal(SIGALRM,sighandler)==SIG_ERR){  
       printf(
    "error on reg");  
       exit(
    2);  
       }  
       v.it_value.tv_sec
    =3//定时3秒  
       v.it_value.tv_usec=0;  
       v.it_interval.tv_sec
    =0;//只做一次  
       v.it_interval.tv_usec=0;  
       setitimer(ITIMER_REAL,
    &v,NULL); //定时器 
       printf("timer has be seted\n");  
       tot
    =0;  
       last
    =v.it_value.tv_sec;  
       goon
    =true;  
       
    while (goon){  
       getitimer(ITIMER_REAL,
    &v);  
       
    int now = v.it_value.tv_sec;  
       
    //printf("now: %d\n",now);  
       if (now==last-1){  
       raise(SIGUSR1);  
       tot
    ++;  
       }  
       last
    =now;  
       }  
        
       
    return 0;  
       }  
       
    static void sighandler(int sigty){  
       
    if (sigty==SIGUSR1){  
       
    struct itimerval v;  
       getitimer(ITIMER_REAL,
    &v);  
       printf(
    "real time: %ld sec %ld\n",v.it_value.tv_sec ,v.it_value.tv_usec  );  
       }
    else if (sigty==SIGALRM){  
       printf(
    "timer stop\n");  
       goon
    =false;  
       }  
       }  
       
    //end  
  • 相关阅读:
    12 【结构型】 浅谈享元模式的理解与使用
    11【结构型】浅谈 外观模式 理解与使用~
    【Maven基础入门】02 了解POM文件构建
    【Maven基础入门】01 Maven的安装与环境变量的配置
    02【创建型】原型模式
    01【创建型】单例模式
    10 浅谈 装饰器模式的理解与使用
    Java JDK1.8源码学习之路 2 String
    Java JDK1.8源码学习之路 1 Object
    ApachShiro 一个系统 两套验证方法-(后台管理员登录、前台App用户登录)同一接口实现、源码分析
  • 原文地址:https://www.cnblogs.com/no7dw/p/2049502.html
Copyright © 2011-2022 走看看