乐观 发表于 2015-1-16 14:26:10

linux教程之怎样在Linux下完成准时器

如果你只是想应付一下操作系统的课程,劝你最好别学,或者说不要指望能用的怎么样。
在Linux完成一个准时器,不像Win32下那样直不雅。在Win32挪用SetTimer就好了,在Linux下则没有响应函数能够间接挪用。准时器作为一个经常使用的功效,在Linux固然也有响应完成。上面我们看看几种经常使用的办法。
要完成准时器功效,最土的举措完成莫过于用sleep/usleep来完成了。固然,它会堵塞以后线程,除处置准时功效外,甚么活也干不了。固然要办理这个成绩不难,创立一个独自的线程来卖力准时器,别的线程卖力一般的义务就好了。
要完成准时器功效,最复杂的举措就是ALarm旌旗灯号。这类办法复杂,也响应的缺点:用旌旗灯号完成效力较低;最小精度为1秒,没法完成高精度的界说器。复杂示例:
#include<stdio.h>
#include<signal.h>
staticvoidtimer(intsig){
if(sig==SIGALRM){
printf("timer
");
}
return;
}
intmain(intargc,char*argv[]){
signal(SIGALRM,timer);
alarm(1);
getchar();
return0;
}

(setitimer和alarm有相似的功效,也是经由过程旌旗灯号来完成)
最文雅的办法是利用RTC机制。使用select函数,你能够用单线程完成准时器,同时还能够处置别的义务。复杂示例:
#include<stdio.h>
#include<linux/rtc.h>
#include<sys/ioctl.h>
#include<sys/time.h>
#include<sys/types.h>
#include<fcntl.h>
#include<unistd.h>
#include<errno.h>
intmain(intargc,char*argv[]){
unsignedlongi=0;
unsignedlongdata=0;
intretval=0;
intfd=open("/dev/rtc",O_RDONLY);
if(fd<0){
perror("open");
exit(errno);
}
/*Setthefreqas4Hz*/
if(ioctl(fd,RTC_IRQP_SET,4)<0){
perror("ioctl(RTC_IRQP_SET)");
close(fd);
exit(errno);
}
/*Setthefreqas4Hz*/
if(ioctl(fd,RTC_IRQP_SET,4)<0){
perror("ioctl(RTC_IRQP_SET)");
close(fd);
exit(errno);
}
/*Enableperiodicinterrupts*/
if(ioctl(fd,RTC_PIE_ON,0)<0){
perror("ioctl(RTC_PIE_ON)");
close(fd);
exit(errno);
}
for(i=0;i<100;i++){
if(read(fd,&data,sizeof(unsignedlong))<0){
perror("read");
close(fd);
exit(errno);
}
printf("timer
");
}
/*Disableperiodicinterrupts*/
ioctl(fd,RTC_PIE_OFF,0);
close(fd);
return0;
}
</p>
当你经过一段时间的学习后就应该扩充自己的知识,多学习linux命令,但是不要在初学阶段就系统的学习linux命令。

精灵巫婆 发表于 2015-1-18 14:36:33

掌握硬件配置,如显卡,声卡,网卡等,硬件只要不是太老或太新一般都能被支持,作为一名Linux系统管理员建议多阅读有关硬件配置文章,对各种不支持或支持不太好的硬件有深刻的了解。

老尸 发表于 2015-1-27 05:05:21

选择交流平台,如QQ群,网站论坛等。

再见西城 发表于 2015-2-5 03:54:50

让我树立了很大的信心学好这门课程,也学到了不少专业知识和技能。?

爱飞 发表于 2015-2-11 04:40:28

得到到草率的回答或者根本得不到任何Linux答案。越表现出在寻求帮助前为解决问题付出的努力,你越能得到实质性的帮助。

冷月葬花魂 发表于 2015-3-1 21:53:03

选择一些适于初学者的Linux社区。

谁可相欹 发表于 2015-3-11 00:50:36

Linux简单,占内存少,特别是对于程序开发人员来说很方便,如果说windows的成功在于其方便用户的窗口管理界面。

小魔女 发表于 2015-3-17 17:11:07

永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。

admin 发表于 2015-3-24 18:58:21

如果上面的措施没有解决问题,此时你就需要Linux社区的帮助了。 Linux的使用者一般都是专业人士,他们有着很好的电脑背景且愿意协助他人。
页: [1]
查看完整版本: linux教程之怎样在Linux下完成准时器