我是靠谱客的博主 优美啤酒,这篇文章主要介绍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 setedn " );  
   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: %dn",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 %ldn " ,v.it_value.tv_sec ,v.it_value.tv_usec  );  
   }
else   if  (sigty == SIGALRM){  
   printf(
" timer stopn " );  
   goon
= false ;  
   }  
   }  
   
// end  

最后

以上就是优美啤酒最近收集整理的关于Linux的 Signal 事件用法的全部内容,更多相关Linux的内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(121)

评论列表共有 0 条评论

立即
投稿
返回
顶部