概述
# 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
#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 事件用法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复