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