c語言linuxsleep
⑴ 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下的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 中sleep是什麼意思
sleep
睡眠,參數為時間,單位:秒
shell中,用法:
sleep seconds,表示睡眠多少秒
代碼中,用法:
#include <unistd.h>
unsigned int sleep(unsigned int seconds);
視實際需要,有時需要睡眠若干秒後繼續執行,如:
執行某一過程,但並不關心是否執行完畢、執行成功還是失敗,也可能執行過程中掛住,這時又不想一直卡在這里不動,就可設定一個睡眠時間x秒,x秒後繼續向下執行。
⑷ 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系統下如何讓C語言sleep()函數等待時間小於1秒
#include
⑹ linux系統c語言進程不想被sleep阻塞等待怎麼解決
1、啟動後檯子任務,在執行命令後加&操作符,表示將命令放在子shell中非同步執行。可以達到多線程效果。如下,sleep10#等待10秒,再繼續下一操作sleep10當前shell不等待,後檯子shell等待。
2、wait命令wait是用來阻塞當前進程的執行,直至指定的子進程執行結束後,才繼續執行。使用wait可以在bash腳本「多進程」執行模式下,起到一些特殊控制的作用。