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  
  • 相关阅读:
    (KMP Next的运用) Period II -- fzu -- 1901
    (字典树)How many--hdu--2609
    (KMP 最大表示最小表示)String Problem -- hdu-- 3374
    (KMP 暴力)Corporate Identity -- hdu -- 2328
    (KMP 扩展)Clairewd’s message -- hdu -- 4300
    (KMP 字符串处理)Substrings -- hdu -- 1238
    (KMP)Count the string -- hdu -- 3336
    JQuery弹出窗口小插件ColorBox
    jquery promot
    C#
  • 原文地址:https://www.cnblogs.com/no7dw/p/2049502.html
Copyright © 2011-2022 走看看