Linux下C編程:alarm

來源:互聯網
上載者:User

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);     }

查看全套文章:http://www.bianceng.cn/Programming/C/201212/34807.htm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.