linuxc語言定時器
//一個示常式序。
#include<stdlib.h>
#include<unistd.h>
#include<signal.h>
#include<time.h>
#include<sys/time.h>
#defineN100//設置最大的定時器個數
inti=0,t=1;//i代表定時器的個數;t表示時間,逐秒遞增
structTimer//Timer結構體,用來保存一個定時器的信息
{
inttotal_time;//每隔total_time秒
intleft_time;//還剩left_time秒
intfunc;//該定時器超時,要執行的代碼的標志
}myTimer[N];//定義Timer類型的數組,用來保存所有的定時器
voidsetTimer(intt,intf)//新建一個計時器
{
structTimera;
a.total_time=t;
a.left_time=t;
a.func=f;
myTimer[i++]=a;
}
voidtimeout()//判斷定時器是否超時,以及超時時所要執行的動作
{
printf("Time:%d ",t++);
intj;
for(j=0;j<i;j++)
{
if(myTimer[j].left_time!=0)
myTimer[j].left_time--;
else
{
switch(myTimer[j].func)
{//通過匹配myTimer[j].func,判斷下一步選擇哪種操作
case1:
printf("------Timer1:--HelloAillo! ");break;
case2:
printf("------Timer2:--HelloJackie! ");break;
case3:
printf("------Timer3:--HelloPiPi! ");break;
}
myTimer[j].left_time=myTimer[j].total_time;//循環計時
}
}
}
intmain()//測試函數,定義三個定時器
{
setTimer(3,1);
setTimer(4,2);
setTimer(5,3);
signal(SIGALRM,timeout);//接到SIGALRM信號,則執行timeout函數
while(1)
{
sleep(1);//每隔一秒發送一個SIGALRM
kill(getpid(),SIGALRM);
}
exit(0);
}
❷ 求linux下用c語言編寫的定時器程序
定時器就相當於系統每隔一段時間給進程發一個定時信號。在linux裡面有一種進程中信息傳遞的方法,那就是信號,定時器程序就是需要定義一個信號處理函數。利用定時器產生的一個信號SIGALRM信號,在收到該信號同時會調用do_alarm函數。這也就類似單片機的定時中斷,當定時到了,就跳到中斷服務函數里去執行相應的程序。 Linux操作系統為每一個進程提供了3個內部間隔計時器. ITIMER_REAL:減少實際時間.到時的時候發出SIGALRM信號. ITIMER_VIRTUAL:減少有效時間(進程執行的時間).產生SIGVTALRM信號. ITIMER_PROF:減少進程的有效時間和系統時間(為進程調度用的時間).這個經常和上面一個使用用來計算系統內核時間和用戶時間.產生SIGPROF信號. 代碼如下:<pre t="code" l="cpp">#include <stdio.h>
#include <time.h>
#include <sys/time.h>
#include <stdlib.h>
#include <signal.h>
static int count = 0;
static struct itimerval oldtv;
void set_timer()
{
struct itimerval itv;
itv.it_interval.tv_sec = 1;
itv.it_interval.tv_usec = 0;
itv.it_value.tv_sec = 1;
itv.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, itv, oldtv);
}
void signal_handler(int m)
{
count ++;
printf("%d\n", count);
}
int main()
{
signal(SIGALRM, signal_handler);
set_timer();
while(count < 10000);
exit(0);
return 1;
}
❸ Linux下定時任務管理c定時器linux
Linux是一種緊湊、靈活和安全的操作系統,在自動化系統管理上普遍採用。定時任務管理是 Linux 系統管理的重要內容,定時任務管理能夠實現系統的定時備份、定時重啟服務等需求。
創建定時任務,可以使用 Crontab 命令。Crontab 並不是 Linux 自帶的一個命令,而是一個專門用來生成定時任務信息的編輯器,它可以用來安排要在每天某一時刻執行的、每周某一時刻執行的、每月某一時刻執行的任務。
當然,也可以使用linux自帶的其他工具實現定時任務管理。At 是一個Unix系統(Linux)管理工具,它可以將任務定時執行,用戶可以指定某一時刻或一段時間以後執行某個任務。使用At 無需手動啟動,它可以做任務的預先安排,它自動在指定的時刻(精確到秒)執行要完成的工作。
Linux上還可使用另一個時間觸發任務實現工具——Time,Time可以設置每天定時執行一個程序,Time是Linux上的一個標准工具,它定時給定一段時間執行指定的程序或任務,它只支持精確到天的任務安排,並不支持精確到毫秒的任務安排。
此外,linux還可以運用腳本語言自動管理。Linux操作系統上常用的腳本語言有shell腳本、Perl腳本。經過簡單的shell腳本編寫,就可以設置定時任務,實現備份、同步等任務的自動化完成,使系統管理變得簡單、高效。
總而言之,linux系統定時任務管理是極其有必要的,利用其豐富的功能可以極大地提升工作效率,並減少人工工作量。Linux上Crontab、At、Time這三個主要定時任務管理工具,以及shell腳本等腳本語言都是我們可以利用的重要資源。
❹ linux下c語言讀取文件時讓其輸出一行停頓幾秒的問題
頭文件添加:
#include <unistd.h>
#include <stdlib.h>
然後,在輸出換行後面加上語句
int ret ;
ret=alarm(2) ; /*調用alarm定時器函數*/
pause() ;
這樣就能實現你要的功能了。
❺ 使用struct itimerval做了一個定時器,現在我希望在執行一些函數的時候停止計時,怎麼處理linux c語言
用setTimeout函數的時候會有一個返回的id,你可以用一個id記錄一個setTimeout。id=setTimeout("這里寫你的函數",1000);然後當你不用的時候可以clearTimeout(id)釋放這個timer。