c語言linuxsleep函數
⑴ 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下的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)c語言linuxsleep函數擴展閱讀:
在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。
⑶ linux系統下如何讓C語言sleep()函數等待時間小於1秒
#include <unistd.h> // 頭文件
int usleep(useconds_t usec); // 函數原型
usec -- 毫秒。整數。最大允許值:小於 1000000
返回 0 -- 表示調用執行成功,1 -- 失敗。
⑷ 關於在linux中運行sleep()的命令
行緩沖!你要修改成這樣。
#include<stdio.h>
int main()
{
printf("hello\n");
sleep(3);
printf("after 3s\n");
return 0;
}
或者printf後面添加fflush,
printf("hello");
fflush(stdout);
⑸ 請教Linux下的sleep函數
函數名: sleep、usleep
功 能: 執行掛起一段時間
頭文件: #include <unistd.h>
區 別: unsigned sleep (unsigned int seconds);//n秒
int usleep (useconds_t usec);//n微秒
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdio.h>
#include<unistd.h>
int main()
{
int sec = 0,
usec = 0;
while(1)
{
printf("sec = %d \n",++sec);
sleep(1);
printf("usec = %d \n",++usec);
usleep(1000000);
}
return 0;
}
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)。
Linux下還有個delay()函數,原型為extern void delay(unsigned int msec);它可以延時msec*4毫秒,也就是如果想延時一秒鍾的話,可以這么用 delay(250)。
⑹ linux中C語言編程時的sleep函數和clear函數的問題
while(n!=0)
{
printf("%2d:%2d:%2d\n",n/3600,(n%3600)/60,n%60); //這里必須要有\n,不然,因為緩存的問題,系統默認輸出是行緩存輸出,在沒有遇到回車換行時,緩存沒有滿時,數據會一直不能輸出,加了回車,就可以輸出了。
⑺ Linux系統sleep命令使用方法說明
sleep,即睡眠的意思,在Linux系統中,sleep命令主要用來延遲shell腳本的時間,也可使用於Windows系統中,下面小編針對sleep命令在Linux系統中的用法做個詳細介紹,並為大家區別下Linux
sleep和Windows
sleep命令的用法。
linux
sleep
命令用來睡眠一段時間,sleep
可以用來將目前動作延遲一段時間。時間的單位有:秒(s),分鍾(m),小時(h),天(d)
用法如下:
sleep
Number(suffix)
默認單位是秒(s)
sleep
1
==
sleep
1s
sleep
0.01
查看版本
linux
sleep
與
windows
sleep的區別
在linux里,sleep
的單位是秒,也就是sleep
1000就是睡眠了1000
秒,而在windows中,如果調用sleep函數單位是毫秒,sleep(1000)則是睡眠了1秒。
上面就是Linux使用sleep命令的方法介紹了,從本文的介紹中可以看出,sleep在Linux和Windows系統的區別主要表現在單位上,但用法並無太大差別。
⑻ 請問linux裡面的sleep函數怎麼用下面的程序代碼為什麼沒有sleep(1)這句話,不能列印出來第一個輸出
sleep
1
就是讓主程序阻塞1秒,等待線程的輸出。你注釋掉sleep,當然不能列印出第一句話。
⑼ linux系統 下 如何讓C語言sleep()函數等待時間小於1秒
sleep()函數大概只能精確到50ms左右,你用sleep(10)是肯定不行的,如果你要精確的定時的話可以使用QueryPerformanceFrequency()函數,用法為:
LARGE_INTEGER litmp;
LONGLONG QPart1,QPart2;
double dfMinus, dfFreq, dfTim;
QueryPerformanceFrequency(&litmp);
dfFreq = (double)litmp.QuadPart;// 獲得計數器的時鍾頻率
QueryPerformanceCounter(&litmp);
QPart1 = litmp.QuadPart;// 獲得初始值
do
{
QueryPerformanceCounter(&litmp);
QPart2 = litmp.QuadPart;//獲得中止值
dfMinus = (double)(QPart2-QPart1);
dfTim = dfMinus / dfFreq;// 獲得對應的時間值,單位為秒
}while(dfTim<0.001);
其定時誤差不超過1微秒,精度與CPU等機器配置有關。
×××××××××××××××××××××××××
sleep()函數的中等待時間是以毫秒計算的,所以等待1秒就是sleep(1000),如果要讓等待時間小於一秒,那麼就讓傳入的參數小於1000就行了.
比如,等待0.1秒:
sleep(100);
⑽ linux C語言select函數怎麼不能實現sleep呀
我修改了一下,運行一下試試,祝你好運:
#include <stdio.h>
#include <sys/select.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
int main()
{
struct timeval tv;
int i =0;
while( i++ < 10)
{
tv.tv_sec = 1;
tv.tv_usec = 0;
printf("%d\n", i);
fflush(stdout);
int ret = select (0, NULL, NULL, NULL, &tv);
if (ret == -1)
{
fprintf (stdout, "select error . errno=%d [%s]\n", errno, strerror(errno));
break;
}
//sleep(1);
//usleep(1000000);
}
return 0;
}