alarm也稱爲鬧鐘函數,alarm()用來設置信號SIGALRM在通過參數seconds指定的秒數後傳送給目前的進程。若是參數seconds爲0,則以前設置的鬧鐘會被取消,並將剩下的時間返回。要注意的是,一個進程只能有一個鬧鐘時間,若是在調用alarm以前已設置過鬧鐘時間,則任何之前的鬧鐘時間都被新值所代替。
函數
所需頭文件
#include<unistd.h>
spa
函數原型
unsigned int alarm(unsigned int seconds)
orm
函數參數
seconds:指定秒數
進程
函數返回值
成功:若是調用此alarm()前,進程已經設置了鬧鐘時間,則返回上一個鬧鐘時間的剩餘時間,不然返回0。
出錯:-1原型
代碼it
#include<unistd.h>
#include<signal.h>
void handler()循環
{
printf("Hello\n");
signal(SIGALRM, handler); //讓內核作好準備,一旦接受到SIGALARM信號,就執行 handler
alarm(5);
}im
void main()
{
int i;
handler();
for(i=1;i<21;i++)margin
{
printf("sleep %d ...\n",i);
sleep(1);
}
}top
結果:剛開始在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函數。