歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 一步一步學Linux C:alarm

一步一步學Linux C:alarm

日期:2017/3/1 10:26:12   编辑:Linux編程

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. void func();
  5. void main()
  6. {
  7. signal(SIGALRM,&func);
  8. alarm(4);
  9. while(1)
  10. pause();
  11. }
  12. void func()
  13. {
  14. printf("getsigalrm!!\n");
  15. alarm(1);
  16. }
Copyright © Linux教程網 All Rights Reserved