目次
1. sleep()
函式簡介
在程式設計中,若需要讓程式暫停一段指定的時間,C語言中常用 sleep()
函式。此函式可讓程式執行暫停指定的秒數。例如用於節省系統資源或延遲顯示使用者介面等各種情境。
sleep()
函式的基本資訊
- 標頭檔案:
<unistd.h>
- 回傳值:
unsigned int
(若被訊號中斷則回傳剩餘的等待秒數)
2. sleep()
函式的用法
sleep()
函式的使用非常簡單,可以在程式中讓某段處理暫停一段時間。以下介紹基本用法與範例。
基本用法
#include <unistd.h>
int main() {
printf("Startn");
sleep(5); // 暫停5秒
printf("Endn");
return 0;
}
此範例中,會先顯示 “Start”,然後暫停5秒,再顯示 “End”。
3. 用 usleep()
進行微調
usleep()
與 sleep()
類似,但可以以毫秒(微秒)為單位進行更細緻的等待。當需要更精確的延遲控制時非常有用。
usleep()
的用法
- 標頭檔案:
<unistd.h>
- 使用範例:
#include <unistd.h>
int main() {
printf("Startn");
usleep(500000); // 暫停0.5秒(500,000微秒)
printf("Endn");
return 0;
}
在這個範例中,會先暫停0.5秒,再顯示 “End”。
4. sleep()
與 usleep()
的實際應用範例
這些函式可用於動畫畫面更新或處理間隔調整等場景。以下展示在迴圈中使用的範例。
範例:迴圈中使用 sleep()
#include <unistd.h>
int main() {
for(int i = 0; i < 5; i++) {
printf("Iteration %dn", i);
sleep(1); // 每次迴圈暫停1秒
}
return 0;
}
此程式會在每次迴圈時暫停1秒。

5. sleep()
的替代方案
除了 sleep()
之外,還有如 nanosleep()
等提供更精確等待的函式。依照需求選擇最適合的函式非常重要。
nanosleep()
的介紹
nanosleep()
可達到奈秒級等待,適合需要高精度延遲的應用情境。
6. 常見陷阱與最佳實踐
使用 sleep()
函式時需注意,它會阻塞程式的執行,可能影響其他處理。這裡介紹一些避免問題的最佳做法。
注意事項與建議
- 長時間
sleep()
會降低程式回應速度 - 考慮使用非阻塞(Non-blocking)替代方案
- 設定最小必要的等待時間
7. 總結
本文介紹了 C 語言中 sleep()
與 usleep()
的用法與注意事項。這些函式可為程式添加延遲效果,但請根據實際需求適當使用。