linux下setitimer定时器与定时器取消
来源:互联网 发布:java程序员个人评价 编辑:程序博客网 时间:2024/05/17 07:44
#include <stdio.h> #include <signal.h> #include <time.h> #include <string.h> #include <stdlib.h> #include <unistd.h> void timer_thread(union sigval v) { static int i = 0; printf ("timer_thread function! %d\n", v.sival_int); printf ("i = %d\n", ++i);} int main() { timer_t timerid; struct sigevent evp; memset(&evp, 0, sizeof(struct sigevent)); //清零初始化 evp.sigev_value.sival_int = 111; //也是标识定时器的,回调函数可以获得 evp.sigev_notify = SIGEV_THREAD; //线程通知的方式,派驻新线程 evp.sigev_notify_function = timer_thread; //线程函数地址 if (timer_create(CLOCK_REALTIME, &evp, &timerid) == -1) { perror("fail to timer_create"); exit(-1); } /* 第一次间隔it.it_value这么长,以后每次都是it.it_interval这么长,就是说it.it_value变0的时候会装载it.it_interval的值 */ struct itimerspec it; it.it_interval.tv_sec = 2; it.it_interval.tv_nsec = 0; it.it_value.tv_sec = 3; it.it_value.tv_nsec = 0; if (timer_settime(timerid, 0, &it, NULL) == -1) { perror("fail to timer_settime"); exit(-1); } //pause(); while (1); return 0;}/* * int timer_gettime(timer_t timerid, struct itimerspec *curr_value); * 获取timerid指定的定时器的值,填入curr_value */
编译需加:-lrt
输出结果:
(倒计时3秒)
timer_thread function! 111
i = 1
(每2s)
timer_thread function! 111
i = 2
(每2s)
timer_thread function! 111
i = 3
(每2s)
timer_thread function! 111
i = 4
linux下取消用setitimer设置的定时器
setitimer设置it_interval和it_value为零:
void uninit_time() { struct itimerval value; value.it_value.tv_sec = 0; value.it_value.tv_usec = 0; value.it_interval = value.it_value; setitimer(ITIMER_REAL, &value, NULL); }
阅读全文
0 0
- linux下setitimer定时器与定时器取消
- Linux下的定时器:alarm()与setitimer()
- Linux下的定时器:alarm()与setitimer()
- Linux下的定时器:alarm()与setitimer()
- Linux下的定时器:alarm()与setitimer()
- Linux下的定时器:alarm()与 setitimer()
- Linux下的定时器:alarm()与setitimer()
- Linux下的定时器:alarm()与setitimer()
- Linux下的定时器:alarm()与setitimer()
- Linux下的定时器:alarm()与setitimer()
- linux下定时器函数 setitimer()
- linux下定时器的使用 - alarm() & setitimer()
- linux下的定时器函数setitimer()
- Linux应用层下定时器函数setitimer
- linux下定时器setitimer的使用
- linux定时器setitimer
- Linux 定时器setitimer()
- Linux 定时器setitimer()
- 读书笔记《Effective C++》条款32:确定你的public继承塑模出is-a关系
- 第27章 无失真系统与理想低通
- 手游页游和端游的服务端的架构与区别
- HDU 5418 (状压dp+floyd)
- 4835: [Lydsy2017年4月月赛]遗忘之树
- linux下setitimer定时器与定时器取消
- xampp开了Apache但是局域网不能访问的问题,快进来,已解决
- rmi远程方法调用
- JS 遍历树
- 第三本书 postfix&mysql dovecot&mysql
- 重构—改善既有代码的设计
- HSSFTextbox
- spring boot application.properties 全部配置属性
- ActiveMQ的几种消息持久化机制