訊號之sleep函式

2022-05-04 20:09:17 字數 715 閱讀 8677

#include unsigned 

int sleep(unsigned int

seconds);

返回值:0或未休眠夠的秒數

此函式使呼叫程序被掛起,直到滿足以下條件之一:

(1)已經過了seconds所指定的牆上時鐘時間。

(2)呼叫程序捕捉到乙個訊號並從訊號處理程式返回。

如果alarm訊號一樣,由於其他系統活動,實際返回時間比所要求的會遲一些。

在第(1)種情形中,返回值是0。當由於捕捉到某個訊號,sleep提早返回時(第(2)種情形),返回值是未睡夠的秒數(所要求的時間減去實際休眠的時間)。

儘管sleep可以用alarm函式(實現,但這並不是必需的。如果使用alarm,則這兩個函式之間可能會互動作用。

程式清單10-21 sleep的可靠實現

#include "

apue.h

"static

void

sig_alrm(

intsigno)

unsigned

intsleep(unsigned

intnsecs)

本篇博文內容摘自《unix環境高階程式設計》(第二版),僅作個人學習記錄所用。關於本書可參考:

Linux 利用訊號實現sleep函式

在另一篇文章linux訊號中,介紹了訊號的產生與處理方式,以及一系列訊號集函式的使用。本文使用訊號機制,模擬實現sleep函式並了解競態條件。在此之前先介紹一波需要用到的函式。sigaction函式 include int sigaction int signum,const struct siga...

第六章 訊號 函式sleep

該函式用於讓呼叫程序掛起,直到 已經過了指定的時間,或者 呼叫程序捕捉到乙個訊號,並從訊號處理程式返回 include unsigned int sleep unsigned int seconds 返回值 若已經過了指定的時間,則返回0 若呼叫程序捕捉到乙個訊號,並從訊號處理程式返回,則sleep...

第十章 訊號(十九) sleep函式

我們已經在本文許多例子裡使用了sleep函式,並在10.10節給出兩個有缺陷的實現。include unsigned int sleep unsigned int seconds 返回0或未睡眠的秒數。這個函式導致呼叫程序被掛起,直到下面某種情況發生 1 seconds指定的掛鐘時間量已經逝去 2 ...