程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> Linux下C編程:alarm

Linux下C編程:alarm

編輯:關於C語言

alarm()用來設置信號SIGALRM在經過參數seconds指定的秒數後傳送給目前的進程。如果參數seconds 為0,則之前設置的鬧鐘會被取消,並將剩下的時間返回。信號正常發送時返回值為0。若新的報警設置在前一次設定尚未結束時,發送,則返回前一次設置所剩時間。返回之前鬧鐘的剩余秒數,如果之前未設鬧鐘則返回0。

alarm()執行後,進程將繼續執行,在後期(alarm以後)的執行過程中將會在seconds秒後收到信號SIGALRM並執行其處理函數。

使用alarm函數可以設置一個計時器,在將來某個指定的時間該計時器會超時。當計時器超時時,產生SIGALARM信號。如果不捕捉或不忽略此信號,則其默認動作是終止調用該alarm函數的進程。

每個進程只能有一個鬧鐘時鐘,如果在調用alarm時,已經為該進程設置過鬧鐘時鐘,而且它還沒有超時,則將該鬧鐘時鐘的余留值作為本次alarm函數調用的返回值。以前登記的鬧鐘時鐘將被新值代替。

如果有以前為進程登記的尚未超過的鬧鐘時鐘,而且本次調用的seconds為0,則取消以前的鬧鐘時鐘,其余留值仍作為alarm的返回值。

(以上這幾段話摘自《unix環境高級編程》)

#include <stdio.h>     
#include <signal.h>     
#include <time.h>     
         
void func();     
void main()     
{     
     signal(SIGALRM,&func);
     alarm(4);
         
     while(1)
       pause();
         
}
         
void func()     
{     
     printf("getsigalrm!!\n");     
     alarm(1);     
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved