在C語言中,usleep和nanosleep函數都是用來實現程序的休眠功能的。
usleep函數: usleep函數用于在給定的時間內暫停程序的執行。它接受一個以微秒為單位的參數,表示暫停的時間長度。函數原型如下:
#include <unistd.h>
int usleep(useconds_t microseconds);
其中,useconds_t是一個無符號整型類型,用來表示微秒數。函數調用成功返回0,失敗返回-1。
nanosleep函數: nanosleep函數用于在給定的時間內暫停程序的執行。它接受一個以納秒為單位的參數,表示暫停的時間長度。函數原型如下:
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
req參數是一個結構體指針,用來指定休眠的時間長度,其中timespec結構體定義如下:
struct timespec {
time_t tv_sec; // 秒數
long tv_nsec; // 納秒數
};
rem參數是一個結構體指針,用來存儲剩余的休眠時間。函數調用成功返回0,失敗返回-1。
毫秒級休眠可以通過usleep函數來實現。由于usleep函數接受的參數是以微秒為單位的,所以可以將毫秒轉換為微秒,然后傳遞給usleep函數。例如,要進行100毫秒的休眠,可以使用以下代碼:
#include <unistd.h>
void sleep_ms(unsigned int milliseconds) {
usleep(milliseconds * 1000);
}
以上代碼中,sleep_ms函數接受一個以毫秒為單位的參數,然后將其轉換為以微秒為單位的數值,并傳遞給usleep函數。這樣就可以實現毫秒級的休眠。