當前位置:首頁 » 操作系統 » sleep頭文件linux

sleep頭文件linux

發布時間: 2024-01-06 09:06:34

c語言sleep用法

C語言標准庫中沒有sleep這個函數,它實際上是一個系統API函數。

函數功能: 執行掛起一段時間

1、在VC中使用帶上頭文件,而且全稱為Sleep(),第一個字母需要大寫。

#include<windows.h>//需要添加頭文件
Sleep(unisgnedlong);//函數聲明

Windows中,Sleep()裡面的單位,是以毫秒為單位,所以如果想讓函數滯留1秒的話,應該寫成:

Sleep(1000);

2、在gcc中,使用的頭文件因gcc版本的不同而不同,一般來說,linux系統需要添加的頭文件為:

#include <unistd.h>

應該是Sleep(1000);

在Linux下,sleep()裡面的單位是秒,而不是毫秒。

⑵ Linux下的sleep函數 要用的話得包涵什麼頭文件啊

Linux下的sleep函數要用的話得需要#include <unistd.h>

sleep把進程的運行狀態改為睡眠,將其從系統可執行隊列去掉,這樣系統就不會調度到該進程,不會分配CPU時間片,同時根據該進程的睡眠時間,將進程掛入相應的定時器隊列中。

同時內核維持一個定時器隊列,每一次時鍾中斷處理,都把當前到期的隊列中的進程喚醒,加入到可運行進程隊列中。 同時對所有掛入定時器隊列中的進程時間值減1。

參考代碼:

#include<stdio.h>

#include<unistd.h>

intmain()

{

int sec=0,

usec=0;

while(1)

{

printf("sec=%d ",++sec);

sleep(1);

printf("usec=%d ",++usec);

usleep(1000000);

}

return0;

}

(2)sleep頭文件linux擴展閱讀:

在Linux下,sleep中的「s」不大寫

sleep()單位為秒,usleep()裡面的單位是微秒。在內核中,sleep的實現是由pause函數和alarm函數兩個實現的。

特別注意在Codeblocks環境下是無法使用sleep函數的,因為在windows上Codeblocks採用mingw(Gnu在Window環境下的編譯器,可以充分使用WindowsApi)作為編譯器,而在stdlib.h中sleep的說明如下:_CRTIMP void __cdecl __MINGW_NOTHROW _sleep (unsigned long) __MINGW_ATTRIB_DEPRECATED;可以認為mingw舍棄了sleep函數,建議用Sleep實現sleep。

⑶ C語言中的sleep() 函數

使用要帶上頭文件:

#include <windows.h>

Sleep函數:
功 能: 執行掛起一段時間
用 法: unsigned sleep(unsigned seconds);
注意:
1.在VC中使用帶上頭文件#include <windows.h>,在Linux下,gcc編譯器中,使用的頭文件因gcc版本的不同而不同#include <unistd.h>
2.在VC中,Sleep中的第一個英文字元為大寫的"S" ,在linux下不要大寫,在標准C中是sleep, 不要大寫,簡單的說VC用Sleep, 別的一律使用sleep。
3.在VC中,Sleep()裡面的單位,是以毫秒為單位,所以如果想讓函數滯留1秒的話,應該是Sleep(1000); 在Linux下,sleep()裡面的單位是秒,而不是毫秒。

示例:


#include<dos.h>
int main(void)
{
sound(440);
delay(500);
nosound();
return 0;
}
delay()是循環等待,該進程還在運行,佔用處理器。
sleep()不同,它會被掛起,把處理器讓給其他的進程。

⑷ 小技巧之查看Linux系統函數頭文件

分享一個小技巧。

我們在寫Linux應用程序時,有時候記不清某個系統函數的頭文件,往往要麼網路,要麼查源碼,這樣做都不方便,費時費力。
其實,可以用一個命令搞定:man。

比如,我要查sleep函數的頭文件,在終端下敲命令: man sleep ,輸出信息:

並沒有發現頭文件!但是,請看紅框里的內容,意思是當前顯示的只是sleep手冊的第1頁,還有第3頁可以參考,繼續輸命令 man 3 sleep ,輸出信息:

看紅框中的內容,是不就看到sleep函數的頭文件及函數原型定義了!

查看read函數頭文件,同樣的,輸入 man read ,直接可以查到:

是不是很方便啊!!!

⑸ 在linux下,想用sleep函數實現延時五秒,應該怎麼設參數

使用許可權 : 所有使用者
使用方式 : sleep [--help] [--version] number[smhd]
說明 : sleep 可以用來將目前動作延遲一段時間
參數說明 :
--help : 顯示輔助訊息
--version : 顯示版本編號
number : 時間長度,後面可接 s、m、h 或 d
其中 s 為秒,m 為 分鍾,h 為小時,d 為日數
例子 :
顯示目前時間後延遲 1 分鍾,之後再次顯示時間 :
date;sleep 1m;date

這個命令更多應用於shell腳本編程里和程序里

如下面的一段程序:

應用程序:

復制代碼
代碼如下:

#include <syswait.h>
usleep(n) //n微秒
Sleep(n)//n毫秒
sleep(n)//n秒
驅動程序:
#include <linux/delay.h>
mdelay(n) //milliseconds 其實現
#ifdef notdef
#define mdelay(n) (\
{unsigned long msec=(n); while (msec--) udelay(1000);})
#else
#define mdelay(n) (\
(__builtin_constant_p(n) && (n)<=MAX_UDELAY_MS) ? udelay((n)*1000) : \
({unsigned long msec=(n); while (msec--) udelay(1000);}))
#endif
調用asm/delay.h的udelay,udelay應該是納秒級的延時
Dos:
sleep(1); //停留1秒
delay(100); //停留100毫秒
Windows:
Sleep(100); //停留100毫秒
Linux:
sleep(1); //停留1秒
usleep(1000); //停留1毫秒

每一個平台不太一樣,最好自己定義一套跨平台的宏進行控制

秒還是微秒?關於延時函數sleep()
因為要寫一段代碼,需要用到sleep()函數,在我印象中,sleep(10)好像是休眠10微秒,結果卻是休眠了10秒(在Linux下)。覺得很奇怪,因為頭兒也記得好像是微秒為單位的。所以就查了一下。

原來linux下的sleep函數原型為:
unsigned int sleep(unsigned int seconds);
而MFC中的Sleep函數原型為:
void Sleep(DWORD dwMilliseconds);
也就是說,Linux下(使用的gcc的庫),sleep()函數是以秒為單位的,sleep(1);就是休眠1秒。而MFC下的sleep()函數是以微秒為單位的,sleep(1000);才是休眠1秒。原來如此啊。而如果在Linux下也用微妙為單位休眠,可以使用線程休眠函數:void usleep(unsigned long usec);當然,使用的時候別忘記#include <system.h>哦。

另外值得一提的是,linux下還有個delay()函數,原型為extern void delay(unsigned int msec);它可以延時msec*4毫秒,也就是如果想延時一秒鍾的話,可以這么用 delay(250);

熱點內容
學編程L2 發布:2024-11-29 07:39:58 瀏覽:429
微信如何設置收與付密碼 發布:2024-11-29 07:39:15 瀏覽:541
mysql備份與恢復腳本 發布:2024-11-29 07:39:13 瀏覽:50
在c語言的基本單位是 發布:2024-11-29 07:38:36 瀏覽:792
c語言演算法結構 發布:2024-11-29 07:23:08 瀏覽:222
空氣壓縮呼吸 發布:2024-11-29 07:23:00 瀏覽:56
百望雲伺服器設備編號必填 發布:2024-11-29 07:13:50 瀏覽:33
安卓手機想不起來密碼怎麼格式化 發布:2024-11-29 07:13:08 瀏覽:552
防止sql注入net 發布:2024-11-29 07:12:18 瀏覽:206
三菱可編程式控制制器手冊 發布:2024-11-29 07:09:28 瀏覽:245