Linux 2.6中在应用层获取线性时间

来源:互联网 发布:php解析视频 编辑:程序博客网 时间:2024/05/01 13:10

在应用层设置的一些计时器,往往在系统时间被修改之后就失效了,gettimeofday()就是这样一个让人又爱又恨的函数。如何在应用层获取一个不受系统时间影响的时间?linux2.6中提供了clock_gettime()函数,使用这个函数可以获得一个类似于jiffies的计数值,也可以获得当前的系统时间:

#include <sys/time.h>#include <unistd.h>#include <stdio.h>#include <time.h>int main(){    while(1)    {struct timeval tm_gettimofdy;time_t tm_time;struct timespec tm_clock_real;struct timespec tm_clock_mono;time(&tm_time);gettimeofday(&tm_gettimofdy, NULL);clock_gettime(CLOCK_REALTIME, &tm_clock_real);//获取系统时间clock_gettime(CLOCK_MONOTONIC, &tm_clock_mono); //获取开机后到现在的tick计时。printf("time:%lu gettimeofday:%lu clock_real:%lu clock_mono:%lu\n",tm_time, tm_gettimofdy.tv_sec, tm_clock_real.tv_sec, tm_clock_mono.tv_sec);sleep(1);}return 0;}


注意编译时要添加 -lrt 。

原创粉丝点击