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  
  • 相关阅读:
    暑假周进度总结(一)
    第十七周进度总结
    大二下学期软件工程概论总结
    第十六周进度总结
    程序员修炼之道读书笔记(三)
    程序员修炼之道读书笔记(二)
    《程序员修炼之道》读书笔记(一)
    第十五周进度总结
    python之路--day6---文件处理
    python之路--day6--字符编码
  • 原文地址:https://www.cnblogs.com/no7dw/p/2049502.html
Copyright © 2011-2022 走看看