阅读量:2
在C语言中,可以使用nanosleep
函数来让程序休眠指定的时间。nanosleep
函数的原型如下:
int nanosleep(const struct timespec *req, struct timespec *rem);
其中,req
参数是一个指向timespec
结构体的指针,结构体定义如下:
struct timespec { time_t tv_sec; // 秒 long tv_nsec; // 纳秒 };
rem
参数是一个指向timespec
结构体的指针,用于返回未休眠完的时间。nanosleep
函数会使当前线程休眠req
参数指定的时间,如果时间未到,会返回-1并将剩余的休眠时间写入rem
参数。
下面是一个使用nanosleep
函数的示例代码:
#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秒,如果休眠被中断,将会打印出剩余的休眠时间。