下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、.如何在Linux下實(shí)現(xiàn)定時(shí)器在Linux實(shí)現(xiàn)一個(gè)定時(shí)器,不像Win32下那樣直觀。在Win32調(diào)用SetTimer就行了,在Linux下則沒(méi)有相應(yīng)函數(shù)可以直接調(diào)用。定時(shí)器作為一個(gè)常用的功能,在Linux當(dāng)然也有相應(yīng)實(shí)現(xiàn)。下面我們看看幾種常用的方法。 要實(shí)現(xiàn)定時(shí)器功能,最土的辦法實(shí)現(xiàn)莫過(guò)于用sleep/usleep來(lái)實(shí)現(xiàn)了。當(dāng)然,它會(huì)阻塞當(dāng)前線程,除了處理定時(shí)功能外,什么活也干不了。當(dāng)然要解決這個(gè)問(wèn)題不難,創(chuàng)建一個(gè)單獨(dú)的線程來(lái)負(fù)責(zé)定時(shí)器,其它線程負(fù)責(zé)正常的任務(wù)就行了。 要實(shí)現(xiàn)定時(shí)器功能,最簡(jiǎn)單的辦法就是ALARM信號(hào)。這種方法簡(jiǎn)單,也相應(yīng)的缺陷:用信號(hào)實(shí)現(xiàn)效率較低; 最小精
2、度為1秒,無(wú)法實(shí)現(xiàn)高精度的定義器。簡(jiǎn)單示例:i nclude <stdio.h>i nclude <signal.h> static void timer(int sig) if(sig = SIGALRM) printf("timern"); return; int main(int ar
3、gc, char* argv) signal(SIGALRM, timer); alarm(1); getchar(); return 0; (setitimer和alarm有類似的功能,也是通過(guò)信號(hào)來(lái)實(shí)現(xiàn)) 最優(yōu)雅的方法是使用RTC機(jī)制。利用select函數(shù),你可以用單線程實(shí)現(xiàn)定時(shí)器,同時(shí)還可以處理其它任務(wù)。簡(jiǎn)單示例: i nclude <stdio.h>i nclude
4、<linux/rtc.h>i nclude <sys/ioctl.h>i nclude <sys/time.h>i nclude <sys/types.h>i nclude <fcntl.h>i nclude <unistd.h>i nclude <errno.h> int main(int argc, char* argv) unsigned long i = 0; unsigned long data = 0;
5、160; int retval = 0; int fd = open ("/dev/rtc", O_RDONLY); if(fd < 0) perror("open"); exit(errno);
6、60; /*Set the freq as 4Hz*/ if(ioctl(fd, RTC_IRQP_SET, 4) < 0) perror("ioctl(RTC_IRQP_SET)"); close(fd); exit(er
7、rno); /*Set the freq as 4Hz*/ if(ioctl(fd, RTC_IRQP_SET, 4) < 0) perror("ioctl(RTC_IRQP_SET)"); close(fd);
8、; exit(errno); /* Enable periodic interrupts */ if(ioctl(fd, RTC_PIE_ON, 0) < 0) perror("ioctl(RTC_PIE_ON)");
9、160; close(fd); exit(errno); for(i = 0; i < 100; i+) if(read(fd, &data, sizeof(unsigned long) < 0)
10、60; perror("read"); close(fd); exit(errno);
11、 printf("timern"); /* Disable periodic interrupts */ ioctl(fd, RTC_PIE_OFF, 0); close(fd); return 0;*調(diào)用setitimer安裝定時(shí)器: 它有三個(gè)參數(shù)第一個(gè)設(shè)ITIMER_REAL,第二和三個(gè)參數(shù)是新的時(shí)
12、鐘間隔和之前設(shè)置的時(shí)鐘間隔。 struct itimerval struct timeval it_interval; /設(shè)為時(shí)鐘間隔 struct timeval it_value; /設(shè)為第一次觸發(fā)的時(shí)鐘間隔,其實(shí)只被執(zhí)行一次,以后按照it_interval的值 下面是一個(gè)具體的例子i nclude <stdio.h&
13、gt;i nclude <time.h>i nclude <sys/time.h>i nclude <stdlib.h>i nclude <signal.h>int count = 0;void set_timer() struct itimerval itv, oldtv; itv.it_interval.tv_sec = 1;
14、160; itv.it_interval.tv_usec = 0; itv.it_value.tv_sec = 5; itv.it_value.tv_usec = 0; setitimer(ITIMER_REAL, &itv, &oldtv);void sigalrm_handler(int sig) count+; printf("timer signal. %dn", count);int main() signal(SIGALRM, si
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年企業(yè)招投標(biāo)內(nèi)部培訓(xùn)協(xié)議
- 鏟齒成形銑刀 課程設(shè)計(jì)
- 水處理課程設(shè)計(jì)氧化溝
- 課程設(shè)計(jì)一般是幾年
- 面包廢水處理課程設(shè)計(jì)
- 2024至2030年中國(guó)電熱式桌下洗碗碟機(jī)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年香水膠盒項(xiàng)目可行性研究報(bào)告
- 2024年游船項(xiàng)目可行性研究報(bào)告
- 交通工程cad課課程設(shè)計(jì)
- 2024至2030年中國(guó)塑料充氣沙發(fā)數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 知道網(wǎng)課智慧《睡眠醫(yī)學(xué)(廣州醫(yī)科大學(xué))》測(cè)試答案
- 電氣設(shè)備故障預(yù)測(cè)與健康管理分析篇
- 中考語(yǔ)文知識(shí)點(diǎn)專題27 名著《紅星照耀中國(guó)》知識(shí)點(diǎn)
- 門診導(dǎo)診課件
- 河北省衡水中學(xué)2022-2023學(xué)年高一上學(xué)期綜合素質(zhì)檢測(cè)二數(shù)學(xué)試題含解析
- 教科版小學(xué)科學(xué)四年級(jí)下冊(cè)說(shuō)課稿全套
- 《樹(shù)立正確的“三觀”》班會(huì)課件
- 2024年ACOG-《第一產(chǎn)程及第二產(chǎn)程管理》指南要點(diǎn)
- GB/T 43747-2024密封膠粘接性的評(píng)價(jià)膠條剝離法
- 建筑工程技術(shù)專業(yè)《裝配式建筑》課程標(biāo)準(zhǔn)
- 好的六堡茶知識(shí)講座
評(píng)論
0/150
提交評(píng)論