如何在Linux下实现定时器

上传人:jiups****uk12 文档编号:39420265 上传时间:2018-05-15 格式:DOC 页数:5 大小:41KB
返回 下载 相关 举报
如何在Linux下实现定时器_第1页
第1页 / 共5页
如何在Linux下实现定时器_第2页
第2页 / 共5页
如何在Linux下实现定时器_第3页
第3页 / 共5页
如何在Linux下实现定时器_第4页
第4页 / 共5页
如何在Linux下实现定时器_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《如何在Linux下实现定时器》由会员分享,可在线阅读,更多相关《如何在Linux下实现定时器(5页珍藏版)》请在金锄头文库上搜索。

1、如何在如何在 LinuxLinux 下实现定时器下实现定时器在 Linux 实现一个定时器,不像 Win32 下那样直观。在 Win32 调用 SetTimer 就行了,在 Linux 下则没有相应函数可以直接调用。定时器作为一个常用的功能,在 Linux 当然也有相应实现。下面我们看看几种常用的方法。要实现定时器功能,最土的办法实现莫过于用 sleep/usleep 来实现了。当然,它会阻塞当前线程,除了处理定时功能外,什么活也干不了。当然要解决这个问题不难,创建一个单独的线程来负责定时器,其它线程负责正常的任务就行了。要实现定时器功能,最简单的办法就是 ALARM 信号。这种方法简单,也相

2、应的缺陷:用信号实现效率较低; 最小精度为 1 秒,无法实现高精度的定义器。简单示例:i nclude i nclude static void timer(int sig)if(sig = SIGALRM)printf(“timern“);return;int main(int argc, char* argv)signal(SIGALRM, timer);alarm(1);getchar();return 0;(setitimer 和alarm有类似的功能,也是通过信号来实现)最优雅的方法是使用 RTC 机制。利用 select 函数,你可以用单线程实现定时器,同时还可以处理其它任务。简单

3、示例:i nclude i nclude i nclude i nclude i nclude i nclude i nclude i nclude int main(int argc, char* argv)unsigned long i = 0;unsigned long data = 0;int retval = 0;int fd = open (“/dev/rtc“, O_RDONLY);if(fd i nclude i nclude i nclude i nclude int count = 0;void set_timer()struct itimerval itv, oldtv;itv.it_interval.tv_sec = 1;itv.it_interval.tv_usec = 0;itv.it_value.tv_sec = 5;itv.it_value.tv_usec = 0;setitimer(ITIMER_REAL, void sigalrm_handler(int sig)count+;printf(“timer signal. %dn“, count);int main()signal(SIGALRM, sigalrm_handler);set_timer();while (count 30)exit(0);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号