GNU date
命令是少数能够返回纳秒的实现之一:
%N nanoseconds (000000000..999999999)
例如,我们可以通过组合%s
和%N
符号来获取自纪元以来纳秒的数量。
$ date +%s%N
1402513692992913666
现在,到实际的问题。 GNU' date
命令在哪里得到如此准确的时间表示?
编辑:"重复"上面的问题实际上并不重复。我问GNU日期从哪里得到它的时间信息(C调用?/ proc?),而不是计算机本身(硬件)。
答案 0 :(得分:0)
Use The Source, Luke! If you look in the source of GNU date, you'll see (in lib/gettime.c
):
if defined CLOCK_REALTIME && HAVE_CLOCK_GETTIME
if (clock_gettime (CLOCK_REALTIME, ts) == 0)
return;
# endif
{
struct timeval tv;
gettimeofday (&tv, NULL);
ts->tv_sec = tv.tv_sec;
ts->tv_nsec = tv.tv_usec * 1000;
}
So the answer to the question is clock_gettime(CLOCK_REALTIME)
where that's available, and gettimeofday()
otherwise (multiplying up from microseconds).