下載本文檔
版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年粉煤灰銷售合同范本(含供應(yīng)鏈金融服務(wù))
- 二零二五美容院美容院美容院品牌戰(zhàn)略規(guī)劃與實(shí)施合同3篇
- 影視院校校外實(shí)訓(xùn)基地協(xié)議書(2篇)
- 二零二五年度民辦中學(xué)教師教學(xué)質(zhì)量提升服務(wù)合同4篇
- 打樁施工方案
- 2025年度個(gè)人房貸提前還款手續(xù)費(fèi)合同4篇
- 財(cái)務(wù)風(fēng)險(xiǎn)述職報(bào)告模板
- 2024年中級(jí)經(jīng)濟(jì)師考試題庫(kù)含答案【鞏固】
- 二零二五年度時(shí)尚面料品牌授權(quán)合作協(xié)議4篇
- 2025年能源互聯(lián)網(wǎng)項(xiàng)目合作實(shí)施保密及技術(shù)交流協(xié)議3篇
- 數(shù)學(xué)-山東省2025年1月濟(jì)南市高三期末學(xué)習(xí)質(zhì)量檢測(cè)濟(jì)南期末試題和答案
- 中儲(chǔ)糧黑龍江分公司社招2025年學(xué)習(xí)資料
- 湖南省長(zhǎng)沙市2024-2025學(xué)年高一數(shù)學(xué)上學(xué)期期末考試試卷
- (完整版)小學(xué)生24點(diǎn)習(xí)題大全(含答案)
- 四川省2023年普通高等學(xué)校高職教育單獨(dú)招生文化考試(中職類)數(shù)學(xué)試題(原卷版)
- 2024年3月江蘇省考公務(wù)員面試題(B類)及參考答案
- 醫(yī)院科室考勤表
- 春節(jié)期間化工企業(yè)安全生產(chǎn)注意安全生產(chǎn)
- 數(shù)字的秘密生活:最有趣的50個(gè)數(shù)學(xué)故事
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)任務(wù)一 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)關(guān)鍵要素分解
- 基于ADAMS的汽車懸架系統(tǒng)建模與優(yōu)化
評(píng)論
0/150
提交評(píng)論