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  
  • 相关阅读:
    750. Number Of Corner Rectangles
    [Project Euler] 3. Largest Prime factor
    [Project Euler] 2. Even Fibonacci numbers
    Jmeter学习笔记3-参数化
    SQL多表连接查询补充
    Jmeter学习笔记2-原件作用域与执行顺序
    Jmeter学习笔记1-实践介绍
    运用badboy录制jmeter脚本
    【SQL提数】左连接使用
    【功能测试技巧2】dubbo引起的数据精度的思考
  • 原文地址:https://www.cnblogs.com/no7dw/p/2049502.html
Copyright © 2011-2022 走看看