setitimer设置定时器测试---1
来源:互联网 发布:淘宝客需要什么软件 编辑:程序博客网 时间:2024/06/05 03:44
/*我们在使用signal和时钟相关的结构体之前,需要包含这两个头文件*/#include <signal.h>#include <sys/time.h>/*声明信号处理函数,这个函数是在进程收到信号的时候调用就可以了*/#include <stdio.h>#include <stdlib.h>#include <string.h>static void sig_handler(int signo);long lastsec,countsec; /*这两个变量分别用来保存上一秒的时间和总共花去的时间*/int main(void){ struct itimerval v; /*定时器结构体*/ long nowsec,nowusec; /*当前时间的秒数和微秒数*/ /*注册SIGUSR1和SIGALARM信号的处理函数为sig_handler*/ if(signal(SIGUSR1,sig_handler)==SIG_ERR) { printf("Unable to create handler for SIGUSR1\n"); exit(0); } if(signal(SIGALRM,sig_handler)==SIG_ERR) { printf("Unable to create handler for SIGALRM\n"); exit(0); } /*初始化定时器初值和当前值*/ v.it_interval.tv_sec=9; v.it_interval.tv_usec=999999;/* next value */ v.it_value.tv_sec=9; v.it_value.tv_usec=999999;/* current value */ /*调用setitimer设置定时器,并将其挂到定时器链表上,这个函数的三个参数的含义分 别是设置ITIMER_REAL类型的定时器,要设置的值存放在变量v中,该定时器设置前 的值在设置后保存的地址,如果是这个参数为NULL,那么就放弃保存设置前的值*/ setitimer(ITIMER_REAL,&v,NULL); lastsec = v.it_value.tv_sec; countsec = 0; /*该循环首先调用getitimer读取定时器当前值,再与原来的秒数比较,当发现已经过了 一秒后产生一个SIGUSR1信号,程序就会进入上面注册过的信号处理函数*/ while(1) { getitimer(ITIMER_REAL,&v); nowsec = v.it_value.tv_sec; nowusec = v.it_value.tv_usec; if(nowsec == lastsec-1) { /*每过一秒,产生一个SIGUSR1信号*/ raise(SIGUSR1); lastsec=nowsec; countsec++; /*记录总的秒数*/ } } return 0;}/*信号处理函数*/static void sig_handler(int signo){ switch(signo) { /*接收到的信号是SIGUSR1,打印One second passed*/ case SIGUSR1: printf("One second passed\n"); break; /*定时器定时到达*/ case SIGALRM: { printf("Timer has been zero,elapsed %d seconds\n",countsec); lastsec = countsec; countsec = 0; break; } }}
0 0
- setitimer设置定时器测试---1
- setitimer设置定时器测试---2
- setitimer: 设置定时器间隔
- Linux定时器设置函数setitimer
- setitimer 定时器
- setitimer函数测试代码1
- 【C语言】【unix c】使用setitimer(2)设置定时器
- linux定时器setitimer
- Linux 定时器setitimer()
- Linux 定时器setitimer()
- Linux 定时器setitimer()
- linux中定时器 setitimer()
- linux c setitimer定时器
- Linux定时器之setitimer()
- Linux定时器函数setitimer
- Linux定时器——setitimer()
- linux定时器 --setitimer 的用法
- 【linux 开发】定时器使用setitimer
- ogg 配置1
- android的spinner字体控制
- java des加密与解密
- 走进cassandra之二:数据模型
- 1077. Kuchiguse (20)
- setitimer设置定时器测试---1
- SQLite的并发处理
- html页面调试设置不让浏览器缓存
- 评论:翻拍《葫芦娃》是文化“啃老”
- window下mysql主从复制设置
- Ubuntu打开终端的方法三种
- oracle存储过程实例
- C++ FAQ
- SQL SERVER – Introduction to SQL Server Encryption and Symmetric Key Encryption Tutorial with Script