在C語言中,可以使用signal函數來設置定時器。下面是一個簡單的定時器程序示例:
#include <stdio.h>
#include <signal.h>
#include <unistd.h>
void timer_handler(int signum)
{
printf("Timer expired!\n");
}
int main()
{
signal(SIGALRM, timer_handler);
// 設置定時器,間隔為1秒
alarm(1);
// 主程序繼續執行
while (1)
{
printf("Main program is running...\n");
sleep(1);
}
return 0;
}
在上面的例子中,我們首先定義了一個名為timer_handler的函數,用于處理定時器超時事件。然后在main函數中使用signal函數注冊SIGALRM信號的處理函數為timer_handler。接著調用alarm函數設置定時器,這里設置定時器的間隔為1秒。最后在一個while循環中,不斷打印"Main program is running…",同時通過sleep函數暫停程序1秒。
當定時器超時后,會觸發SIGALRM信號,從而執行timer_handler函數中的內容,即打印"Timer expired!"。然后程序會繼續執行while循環中的代碼。
需要注意的是,定時器的精度受系統的調度和負載情況的影響,可能會有一定的誤差。