要精確控制nanosleep
函數的延時時間,可以通過以下步驟:
計算所需的睡眠時間,以納秒為單位。例如,如果要睡眠1毫秒(即1000納秒),則睡眠時間為1000。
將睡眠時間分解為秒和納秒部分,并存儲在timespec
結構體中。timespec
結構體包含兩個成員變量tv_sec
和tv_nsec
,分別表示秒和納秒。
調用nanosleep
函數,并傳入計算得到的timespec
結構體作為參數。
下面是一個示例代碼,演示如何精確控制nanosleep
函數的延時時間:
#include <stdio.h>
#include <time.h>
void delay(int milliseconds) {
struct timespec ts;
ts.tv_sec = milliseconds / 1000;
ts.tv_nsec = (milliseconds % 1000) * 1000000;
nanosleep(&ts, NULL);
}
int main() {
printf("Start\n");
delay(1000); // 睡眠1秒
printf("End\n");
return 0;
}
在上面的示例中,delay
函數接受一個整數參數,表示要睡眠的毫秒數。函數內部計算得到秒和納秒部分,并傳入nanosleep
函數中,以實現精確控制睡眠時間。