Posted on 2008-08-18 18:55
Prayer 閱讀(6774)
評論(0) 編輯 收藏 引用 所屬分類:
LINUX/UNIX/AIX
alarm(設置信號傳送鬧鐘)
相關函數 signal,sleep
表頭文件 #include<unistd.h>
定義函數 unsigned int alarm(unsigned int seconds);
函數說明 alarm()用來設置信號SIGALRM在經過參數seconds指定的秒數后傳送給目前的進程。如果參數seconds 為0,則之前設置的鬧鐘會被取消,并將剩下的時間返回。
返回值 返回之前鬧鐘的剩余秒數,如果之前未設鬧鐘則返回0。
代碼
#include<unistd.h>
#include<signal.h>
void handler() {
printf("Hello\n");
signal(SIGALRM,handler);讓內核做好準備,一旦接受到SIGALARM信號,就執行 handler
alarm(5);
}/*這段函數的執行時間不計算在for循環的時間之內*/
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