溫馨提示×

如何在C語言中正確使用nanosleep

小樊
98
2024-07-03 01:17:13
欄目: 編程語言

在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秒,如果休眠被中斷,將會打印出剩余的休眠時間。

0