歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

一步一步學Linux C:alarm

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

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

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

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

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

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

  1. #include <stdio.h>   
  2. #include <signal.h>   
  3. #include <time.h>   
  4.   
  5. void func();  
  6. void main()  
  7. {  
  8.      signal(SIGALRM,&func);  
  9.      alarm(4);  
  10.   
  11.      while(1)  
  12.        pause();  
  13.   
  14. }  
  15.   
  16. void func()  
  17. {  
  18.      printf("getsigalrm!!\n");  
  19.      alarm(1);  
  20. }  
Copyright © Linux教程網 All Rights Reserved