本文目錄一覽:
求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語言定時器(求高人指點)
可以用alarm信號做:
alarm(設置信號傳送鬧鐘)
相關函數 signal,sleep
表頭文件 #includeunistd.h
定義函數 unsigned int alarm(unsigned int seconds);
函數說明 alarm()用來設置信號SIGALRM在經過參數seconds指定的秒數後傳送給目前的進程。如果參數seconds 為0,則之前設置的鬧鐘會被取消,並將剩下的時間返回。
返回值返回之前鬧鐘的剩餘秒數,如果之前未設鬧鐘則返回0。
#includeunistd.h
#includesignal.h
void handler() {
//這裡讀跳變次數
}
main()
{
int i;
signal(SIGALRM,handler);//這裡設置時鐘信號的響應函數
alarm(1); //這裡設置每一秒鐘發送一個時鐘信號
}
linux下C語言有沒有定時調用的函數
你是指延遲函數還是定時調用,比如到11:12:13秒執行某個函數?
如果是延時函數用
usleep(usec); // 微妙
sleep(sec); // 秒
如果是定時執行的話,你只能開個線程或while,每隔1s判斷下當前系統時間,
struct tm *ptm;
long ts;
int y,m,d,h,n,s;
ts = time(NULL);
ptm = localtime(ts);
y = ptm- tm_year+1900; //年
m = ptm- tm_mon+1; //月
d = ptm- tm_mday; //日
h = ptm- tm_hour; //時
n = ptm- tm_min; //分
s = ptm- tm_sec; //秒
照著上面的格式組成字元串進行判斷,到點了就執行就可以了
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/239638.html