linux 的sleep()、usleep()、nanosleep()函數(shù)

原文地址: https://blog.csdn.net/weibo1230123/article/details/79139476

(1)sleep()-------以秒為單位

unsigned int sleep(unsigned int seconds);

sleep()非系統(tǒng)調(diào)用,sleep()是在庫函數(shù)中實現(xiàn)的,它是通過alarm()來設(shè)定報警時間,使用sigsuspend()將進程掛起在信號SIGALARM上。
sleep()只能精確到秒級上。sleep()會令目前的進程暫停,直到達到參數(shù)seconds 所指定的時間,或是被信號所中斷。

#include<unistd.h>

return:若進程暫停到參數(shù)seconds 所指定的時間,成功則返回0,若有信號中斷則返回剩余秒數(shù)。


(2)usleep()----以微秒為單位

unsigned int usleep(unsigned int useconds);

除了時間單位為微秒以外,在使用上與sleep()差不多。還有就是實現(xiàn)也是不同的,sleep因為是用alarm實現(xiàn)的,所以時間單位為s ,而usleep的時間單位為us
,那肯定不是由alarm實現(xiàn)的,所以說它們的實現(xiàn)不同,但都是linux用的,而window下不能用,因為都是sleep和usleep都是在unistd.h下定義的。

#include<unistd.h>

return:若進程暫停到參數(shù)seconds 所指定的時間,成功則返回0,若有信號中斷則返回剩余微秒數(shù)。


(3)nanosleep( )---------以納秒為單位

struct timespec
 {
  time_t  tv_sec;         /* 秒seconds */
 long    tv_nsec;        /* 納秒nanoseconds */
 };
int nanosleep(const struct timespec *req, struct timespec *rem);

#include<time.h>

這個函數(shù)功能是暫停某個進程直到你規(guī)定的時間后恢復(fù),參數(shù)req就是你要暫停的時間,其中req->tv_sec是以秒為單位,而tv_nsec以毫微秒為單位(10的-9次方秒)。由于調(diào)用nanosleep是是進程進入TASK_INTERRUPTIBLE,這種狀態(tài)是會相應(yīng)信號而進入TASK_RUNNING狀態(tài)的,這就意味著有可能會沒有等到你規(guī)定的時間就因為其它信號而喚醒,此時函數(shù)返回-1,切還剩余的時間會被記錄在rem中。
return: 若進程暫停到參數(shù)req所指定的時間,成功則返回0,若有信號中斷則返回-1,并且將剩余微秒數(shù)記錄在rem中。

注意:

unistd.h 是 unix 系統(tǒng)標準頭文件,用于系統(tǒng)調(diào)用,相當(dāng)于win32中的windows.h,unistd.h 定義的函數(shù)只能用于UNIX環(huán)境中,而不能用于windows。所以sleep 和 usleep 只能用于linux下,而不能用于windows 。
nalosleep 和 其它時間日期操作函數(shù)一樣都是定義在time.h中的,所以都適用

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Linux系統(tǒng)概述 不加引號可理解為宏,直接替換,單引號中特殊字符會被解釋為普通字符,雙引號中$,,'還是特殊...
    赤果_b4a7閱讀 1,631評論 0 2
  • 原文鏈接,感謝網(wǎng)友分享 sleep想必都知道,作用是讓進程掛起一段時間,參數(shù)是秒。但是很羞愧,對于usleep,我...
    涼風(fēng)起君子意如何閱讀 46,567評論 1 13
  • 今晚繼續(xù)南風(fēng)廣場促銷,天氣太熱,刮過來的風(fēng)都是熱乎乎的,人也不多,站那跟同伴閑聊,夜色漸漸降臨,人也慢慢多了起來,...
    憧憬幸福閱讀 335評論 0 0
  • 我和電視 四、神奇的八頻道 文/張守權(quán) 三四十年前的黑白電視的調(diào)頻旋鈕周圍,刻度盤上基本是12個數(shù)字,表示...
    張守權(quán)閱讀 957評論 1 2
  • 早上照常5:30分起床,昨天的天氣預(yù)報果然很準,臺風(fēng)如期而至,窗外狂風(fēng)呼嘯、大雨傾盆。想到今天的公開課,心里有點發(fā)...
    英曼繪生活閱讀 262評論 0 0

友情鏈接更多精彩內(nèi)容