获取系统信息
一、时间
1、概念
2020.12.09
GMT是格林尼治时间,就是格林尼治地区的时间,作为全球 国际时间,方便描述全球性事件。(起源于天文学)
现在越来越多的使用UTC时间(使用原子钟计时)。
(1)点时间和短时间(计算机)
点时间—一个时刻
段时间–一个时间段;段时间=一个点时间 - 一个点时间;
(2)定时器和实时时钟
定时器(timer)–定的是一个段时间;
实时时钟(RTC)–与点时间有关的一个器件。
(3)Linux系统中的时间
**jiffies是Linux内核中的一个全局变量,用来记录以j内核的节拍时间为单位时间长度的一个数值。
**内核在开机启动的时候会读取RTC硬件,获取一个时间作为一个基准时间,这个基准时间对应一个jiffies值。(jiffies = 用这个时间 - 1970-01-01 00:00:00,然后再换算)可通过man 2 time 查看。操作系统只在开机时读取一次RTC。
一个时间节拍的时间取决于操作系统的配置,Linux一般是10ms或者1ms。也称调度时间,在内核中用Hz来记录和表示的。
常用的时间相关的API:
使用man 2 …查看
time ctime localtime gmtime mktime asctime strftime gettimeofday settimeofday
localtime 得到本地时间(系统设置的时区时间)
gmtime 得到国际时间
asctime strftime 得到字符串类时间。
gettimeofday 返回的是由timeval表示时间 和timezone表示时区。
2、API实战
(1)time
能得到一个距离基准时间utc过去了多少秒。
#include <stdio.h>
#include <time.h>
int main(void)
{
time_t tNow = 0;
tNow = time(NULL);
//time(&tNow);或者可以这样 前面使用time_t tNow = -1;
if (tNow < 0)
{
perror("time");
return -1;
}
printf("time: %ld \n",tNow);
return 0;
}
效果为: