国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

信號之alarm和pause函數

2024-06-28 13:28:28
字體:
來源:轉載
供稿:網友
信號之alarm和pause函數

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

#include <unistd.h>unsigned int alarm( unsigned int seconds );返回值:0或以前設置的鬧鐘時間的余留秒數

其中,參數seconds的值是秒數,經過了指定的seconds秒后會產生信號SIGALRM。要了解的是,經過了指定的秒數后,信號由內核產生,由于進程調度的延遲,所以進程得到控制從而能夠處理該信號還需要一些時間。

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

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

雖然SIGALRM的默認動作是終止進程,但是大多數使用鬧鐘的進程會捕捉此信號。如果此時進程要終止,則在終止之前它可以執行所需的清理操作。如果我們想捕捉SIGALRM信號,則必須在調用alarm之前設置該信號的處理程序。如果我們先調用alarm,然后在我們能夠設置SIGALRM處理程序之前已經接收到該信號,那么進程將終止。

pause函數使調用進程掛起直至捕捉到一個信號。

#include <unistd.h>int pause(void);返回值:-1,并將errno設置為EINTR

只有執行了一個信號處理程序并從其返回時,pause才返回。在這種情況下,pause返回-1,并將errno設置為EINTR。

 

注意,在涉及信號時需要有精細而周到的考慮。

 

本篇博文內容摘自《UNIX環境高級編程》(第二版),僅作個人學習記錄所用。關于本書可參考:http://www.apuebook.com/。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黑龙江省| 宜州市| 阜南县| 马公市| 湘潭县| 黄石市| 甘肃省| 九寨沟县| 桃江县| 佳木斯市| 乌鲁木齐市| 易门县| 临桂县| 偏关县| 仁化县| 蒙自县| 林周县| 南城县| 尤溪县| 荆州市| 平山县| 民丰县| 乃东县| 桓仁| 新丰县| 乐业县| 塔河县| 封丘县| 新竹县| 溧阳市| 宕昌县| 寿阳县| 类乌齐县| 阿拉尔市| 运城市| 伊宁市| 叙永县| 靖江市| 台江县| 青岛市| 滨州市|