linux中一個比較簡單的計時器是alarm() 和 signal()
如果要求不很精確的話,用它們兩個配合就足夠了。
從alarm這個名字的意思“警告”就可以看出,此計時器在設計時,也許就僅僅只是提供給調用者用來做警告
使用的。
聲明如下:
unsigned int alarm(unsigned int seconds)
爲SIGALRM信號而設,在指定的時間seconds秒後,將向進程本身發送SIGALRM信號,又稱爲鬧鐘時間。
進程調用alarm後,任何以前的alarm()調用都將無效。如果參數seconds爲零,那麼進程內將不再包含任何鬧鐘時間。
如果調用alarm()前,進程中已經設置了鬧鐘時間,則返回上一個鬧鐘時間的剩餘時間,否則返回0。
需要包含頭文件:unistd.h
例子一:
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void sigalrm_fn(int sig)
...{
printf("alarm! ");
alarm(10);
return;
}
int main(void)
...{
signal(SIGALRM, sigalrm_fn);
alarm(2);
printf("Do someting ");
while (1)
...{
pause();
printf("pause ");
}
}
例子二:
#include<unistd.h>
#include<signal.h>
void handler()
...{
printf(“hello ”);
}
main()
...{
int i;
signal(SIGALRM,handler);
alarm(5);
for(i=1;i<7;i++)
...{
printf(“sleep %d ... ”,i);
sleep(1);
}
}
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/wudi_1982/archive/2007/05/11/1605153.aspx