我是靠谱客的博主 优美啤酒,最近开发中收集的这篇文章主要介绍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的 Signal 事件用法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部