在C語言中,可以使用nanosleep
函數(shù)來讓程序休眠指定的時間。nanosleep
函數(shù)的原型如下:
int nanosleep(const struct timespec *req, struct timespec *rem);
其中,req
參數(shù)是一個指向timespec
結(jié)構(gòu)體的指針,結(jié)構(gòu)體定義如下:
struct timespec {
time_t tv_sec; // 秒
long tv_nsec; // 納秒
};
rem
參數(shù)是一個指向timespec
結(jié)構(gòu)體的指針,用于返回未休眠完的時間。nanosleep
函數(shù)會使當前線程休眠req
參數(shù)指定的時間,如果時間未到,會返回-1并將剩余的休眠時間寫入rem
參數(shù)。
下面是一個使用nanosleep
函數(shù)的示例代碼:
#include <stdio.h>
#include <time.h>
int main() {
struct timespec sleep_time, remaining_time;
sleep_time.tv_sec = 1; // 休眠1秒
sleep_time.tv_nsec = 0; // 0納秒
if(nanosleep(&sleep_time, &remaining_time) == -1) {
printf("Sleep interrupted. Remaining time: %ld seconds, %ld nanoseconds\n", remaining_time.tv_sec, remaining_time.tv_nsec);
} else {
printf("Slept for 1 second\n");
}
return 0;
}
在上面的代碼中,程序會休眠1秒,如果休眠被中斷,將會打印出剩余的休眠時間。