wait 是等待子進(jìn)程的返回 sleep 參數(shù)指定暫停時(shí)間, 單位是 s delay 參數(shù)指定暫停時(shí)間, 單位是 ms 所以 sleep(n) == delay(1000*n) 原型:extern void sleep(unsigned int sec); 用法:#include system.h 功能:短暫延時(shí) 說(shuō)明:延時(shí)sec秒舉例:// sleep.c #include system.h main(){int c;clrscr();printf("\nHello, world!");sleep(1);clrscr();printf("\nHi, guys");getchar();return 0;}原型:extern void delay(unsigned int msec); 用法:#include system.h 功能:短暫延時(shí) 說(shuō)明:延時(shí)msec*4毫秒舉例:// delay.c #include system.h main(){int c;clrscr();printf("\nHello, world!"); delay(250); // 250*4=1000msec=1secclrscr();printf("\nHi, guys");getchar();return 0;}wait(等待子進(jìn)程中斷或結(jié)束)相關(guān)函數(shù)waitpid,fork表頭文件#includesys/types.h #includesys/wait.h 定義函數(shù)pid_t wait (int * status);函數(shù)說(shuō)明 wait()會(huì)暫時(shí)停止目前進(jìn)程的執(zhí)行,直到有信號(hào)來(lái)到或子進(jìn)程結(jié)束。如果在調(diào)用wait()時(shí)子進(jìn)程已經(jīng)結(jié)束,則wait()會(huì)立即返回子進(jìn)程結(jié)束狀態(tài) 值。子進(jìn)程的結(jié)束狀態(tài)值會(huì)由參數(shù)status 返回,而子進(jìn)程的進(jìn)程識(shí)別碼也會(huì)一快返回。如果不在意結(jié)束狀態(tài)值,則參數(shù)status可以設(shè)成NULL。子進(jìn)程的結(jié)束狀態(tài)值請(qǐng)參考waitpid()。 返回值如果執(zhí)行成功則返回子進(jìn)程識(shí)別碼(PID),如果有錯(cuò)誤發(fā)生則返回-1。失敗原因存于errno中。
創(chuàng)新互聯(lián)主要從事網(wǎng)站制作、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)革吉,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):13518219792
不是標(biāo)準(zhǔn)函數(shù),應(yīng)是自定義函數(shù)。例如:
#include "windows.h"
void waiting(){
Sleep(1000);
}
調(diào)用 waiting() 則將 等待 1秒鐘。
=============
例如:
#include time.h
void waiting ( int seconds )
{
clock_t endwait;
endwait = clock () + seconds * CLK_TCK ;
while (clock() endwait) {}
}
調(diào)用 waiting(1) 則將 等待 1秒鐘。
等待按鍵 getch 任意按鍵無(wú)需回車 頭文件視使用條件而定
等待延時(shí) sleep
消息隊(duì)列的等待就是GetMessage,沒(méi)辦法自己寫,除非你打算改Windows本身。這個(gè)函數(shù)如果沒(méi)有消息進(jìn)來(lái)就會(huì)釋放CPU,如果不希望等待用PeekMessage。消息循環(huán)的格式是固定的。
使用要帶上頭文件:
#include windows.h
Sleep函數(shù):
功 能: 執(zhí)行掛起一段時(shí)間
用 法: unsigned sleep(unsigned seconds);
注意:
1.在VC中使用帶上頭文件#include windows.h,在Linux下,gcc編譯器中,使用的頭文件因gcc版本的不同而不同#include unistd.h
2.在VC中,Sleep中的第一個(gè)英文字符為大寫的"S" ,在linux下不要大寫,在標(biāo)準(zhǔn)C中是sleep, 不要大寫,簡(jiǎn)單的說(shuō)VC用Sleep, 別的一律使用sleep。
3.在VC中,Sleep()里面的單位,是以毫秒為單位,所以如果想讓函數(shù)滯留1秒的話,應(yīng)該是Sleep(1000); 在Linux下,sleep()里面的單位是秒,而不是毫秒。
示例:
#includestdio.h
#include windows.h
int main()
{
int a=100;?
Sleep(3000);
printf("%d",a);
return 0;
}
usleep函數(shù):
功能: usleep功能把進(jìn)程掛起一段時(shí)間, 單位是微秒us(百萬(wàn)分之一秒)。
語(yǔ)法: void usleep(int micro_seconds);
返回值: 無(wú)
注意:這個(gè)函數(shù)不能工作在 Windows 操作系統(tǒng)中。
usleep() 與sleep()類似,用于延遲掛起進(jìn)程。進(jìn)程被掛起放到reday queue。只是一般情況下,延遲時(shí)間數(shù)量級(jí)是秒的時(shí)候,盡可能使用sleep()函數(shù)。且此函數(shù)已被廢除,可使用nanosleep?!?/p>
如果延遲時(shí)間為幾十毫秒,或者更小,盡可能使用usleep()函數(shù)。這樣才能最佳的利用CPU時(shí)間。
delay函數(shù):
功 能: 將程序的執(zhí)行暫停一段時(shí)間,單位是毫秒ms(千分之一秒)
用 法: void delay(unsigned milliseconds);
示例:
#includedos.h
int main(void)
{
sound(440);
delay(500);
nosound();
return 0;
}
delay()是循環(huán)等待,該進(jìn)程還在運(yùn)行,占用處理器。
sleep()不同,它會(huì)被掛起,把處理器讓給其他的進(jìn)程。
如果對(duì)時(shí)間要求非常精確,可以考慮采用和匯編中處理的情況,看看cpu的頻率,將for命令分解成匯編語(yǔ)言,看多少毫秒執(zhí)行一次命令,然后設(shè)置循環(huán)次數(shù),這樣足夠精確,實(shí)際上在匯編下也是這么做的。