在C語言中,可以使用<time.h>
頭文件中的定時器相關函數來編寫定時器程序。下面是一個簡單的示例:
#include <stdio.h>
#include <stdlib.h>
#include <signal.h>
#include <unistd.h>
void timer_handler(int signum) {
printf("Timer expired!\n");
}
int main() {
struct sigaction sa;
struct itimerval timer;
// 為定時器信號設置處理函數
sa.sa_handler = timer_handler;
sigemptyset(&sa.sa_mask);
sa.sa_flags = 0;
sigaction(SIGALRM, &sa, NULL);
// 設置定時器時間間隔
timer.it_value.tv_sec = 1; // 初始超時時間為1秒
timer.it_value.tv_usec = 0;
timer.it_interval.tv_sec = 1; // 定時器周期為1秒
timer.it_interval.tv_usec = 0;
// 啟動定時器
setitimer(ITIMER_REAL, &timer, NULL);
// 等待定時器信號
while(1) {
sleep(1);
}
return 0;
}
在上面的示例中,首先定義了一個timer_handler
函數,該函數用于處理定時器超時信號。然后,使用sigaction
函數為定時器信號SIGALRM設置處理函數。接下來,使用itimerval
結構體設置定時器的超時時間和周期,這里將超時時間設置為1秒,周期也設置為1秒。最后,使用setitimer
函數啟動定時器。然后,程序進入一個無限循環,等待定時器信號的到來。每當定時器超時時,將會調用timer_handler
函數,并輸出"Timer expired!"的提示信息。
你可以根據自己的需要修改定時器的超時時間和處理函數,以適應具體的應用場景。