2016-09-22 56 views
0

我來到這裏與籽粒2.6.18 Linux的麻煩,當我試圖讓納秒的時間,像這樣:clock_gettime得到ns是0

#include <stdio.h> 
#include <stdlib.h> 
#include <time.h> 

int main(void) 
{ 
    struct timespec time_start; 

    clock_gettime(CLOCK_REALTIME, &time_start); 

    printf(CLOCK_REALTIME); 
    printf("\nstart time %llus,%llu ns\n", time_start.tv_sec,time_start.tv_nsec); 

    return 0; 
} 

但是當我運行該腳本,它像打印這樣的:

[[email protected] test]# ./time 

start time 1474529199s,506211000 ns 
[[email protected] test]# ./time 

start time 1474529200s,65344000 ns 
[[email protected] test]# ./time 

start time 1474529200s,557196000 ns 

只能得到微秒這裏,和NS是0

誰能告訴我,爲什麼它這樣的嗎?

+0

我的看法是,並非所有的平臺都會實現clock_gettime來返回納秒,所以你運氣不好。 – Bathsheba

回答

1

您可以獲得與操作系統相同的精度。在這種情況下,操作系統似乎只能提供微秒級的分辨率,所以你無能爲力。

這並不罕見,因爲您要求自1970年以來的確切時間(秒)。您可以檢查clock()或查找某個可能提供更高分辨率的操作系統相關函數。 (自計算機啓動以來,時鐘通常會計數)。

這不是內核,它是內核。像「核心」一樣。拼錯這樣的技術術語是很糟糕的形式,因爲這裏的許多人都是非母語的人,並且可能認爲這是正確的,並且錯誤擴散。