標籤:style blog http color strong 檔案 for ar 代碼
原文出處:http://blog.sina.com.cn/s/blog_6a1837e90100uhl3.html
alarm也稱為鬧鐘函數,alarm()用來設定訊號SIGALRM在經過參數seconds指定的秒數後傳送給目前的進程。如果參數seconds為0,則之前設定的鬧鐘會被取消,並將剩下的時間返回。要注意的是,一個進程只能有一個鬧鐘時間,如果在調用alarm之前已設定過鬧鐘時間,則任何以前的鬧鐘時間都被新值所代替。
所需標頭檔
#include<unistd.h>
函數原型
unsigned int alarm(unsigned intseconds)
函數參數
seconds:指定秒數
函數傳回值
成功:如果調用此alarm()前,進程已經設定了鬧鐘時間,則返回上一個鬧鐘時間的剩餘時間,否則返回0。
出錯:-1
代碼
#include<unistd.h>
#include<signal.h>
void handler()
{
printf("Hello\n");
signal(SIGALRM, handler);//讓核心做好準備,一旦接受到SIGALARM訊號,就執行 handler
alarm(5);
}
void main()
{
int i;
handler();
for(i=1;i<21;i++)
{
printf("sleep %d ...\n",i);
sleep(1);
}
}
結果:剛開始在main中執行一次,然後每隔5秒執行一次handler()
Hello
sleep 1 ...
sleep 2 ...
sleep 3 ...
sleep 4 ...
sleep 5 ...
Hello
sleep 6 ...
sleep 7 ...
sleep 8 ...
sleep 9 ...
sleep 10 ...
Hello
sleep 11 ...
sleep 12 ...
sleep 13 ...
sleep 14 ...
sleep 15 ...
Hello
sleep 16 ...
sleep 17 ...
sleep 18 ...
sleep 19 ...
sleep 20 ...
Hello
注意:alarm只設定一個鬧鐘,時間到達並執行其註冊函數之後,鬧鐘便失效。如果想迴圈設定鬧鐘,需在其註冊函數中在調用alarm函數。
linux C之alarm函數 轉