温馨提示×

如何在C语言中正确使用nanosleep

小樊
98
2024-07-03 01:17:13
栏目: 编程语言

在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秒,如果休眠被中断,将会打印出剩余的休眠时间。

0