Linux gettimeofday、timeradd、timercmp and example

标签: gettimeofday timeradd timercmp
2人阅读 评论(0) 收藏 举报
分类:

gettimeofday

/* 根据时域获取当前时间 */
int gettimeofday(struct timeval *tv, struct timezone *tz);

参数定义如下:

struct timeval {
   time_t      tv_sec;     /* seconds */
    suseconds_t tv_usec;    /* microseconds */
};
struct timezone {
   int tz_minuteswest;     /* minutes west of Greenwich */
    int tz_dsttime;         /* type of DST correction */
};

timeradd

/* a和b相加的结果放到res中 */
void timeradd(struct timeval *a, struct timeval *b,
                     struct timeval *res);

timercmp

/*
compares the timer values in a and b using the comparison operator CMP, 
and returns true (nonzero) or false (0) depending on the result 
of the comparison. Some systems (but not Linux/glibc), have a 
broken timercmp() implementation, in which CMP of >=, <=, and 
== do not work; portable applications can instead use 
*/
int timercmp(struct timeval *a, struct timeval *b, CMP);

example

#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <string.h>
#include <linux/netlink.h>
#include <errno.h>
#include <sys/time.h>

int main(int argc, char const *argv[])
{
    struct timeval now, max_timeout, timeout;
    unsigned long long current, start;

    gettimeofday(&now, NULL);/* 获取当前时间 */
    max_timeout.tv_sec = 10;/* 设置10s后超时 */
    max_timeout.tv_usec = 0;
    timeradd(&now, &max_timeout, &timeout);/* 计算超时后的时间 */

    start = ((unsigned long long)now.tv_sec * 1000000LL) + now.tv_usec; /* 记录开始时的时间 */

    while (1) {
        gettimeofday(&now, NULL);
        if (timercmp(&now, &timeout, >)) {/* 比较是否超时 */
            current = ((unsigned long long)now.tv_sec * 1000000LL) + now.tv_usec;
            printf("timeout happend after %llu seconds\n", (current / 1000000) - (start / 1000000));
            break;
        } else {
            printf("no timeout...\n");
        }
        sleep(1);
    }
    return 0;
}
查看评论

linux下的定时或计时操作(gettimeofday等的用法,秒,微妙,纳秒)

一、用select()函数实现非阻塞时的等待时间,用到结构体struct timeval {},这里就不多说了。 二、用gettimeofday()可获得微妙级(0.000001秒)的系统时间,调用...
  • xiaolong2w
  • xiaolong2w
  • 2014-08-27 10:51:17
  • 2180

linux时间函数gettimeofday解析

我们在程序中会频繁地取当前时间,例如处理一个http请求时,两次调用gettimeofday取差值计算出处理该请求消耗了多少秒。这样的调用无处不在,所以我们有必要详细了解下,gettimeofday这...
  • tjcwt2011
  • tjcwt2011
  • 2017-06-06 16:23:24
  • 944

linux下使用gettimeofday获取当前时间的注意事项

有时候需要打印代码执行到某处的时间,或者需要计算程序执行的时间差。这时会用到gettimeofday函数,它可以返回自1970-01-01 00:00:00到现在经历的秒数, 该函数定义在中, i...
  • qiuchangyong
  • qiuchangyong
  • 2017-04-01 18:32:44
  • 5733

Linux下时间/时区的设置以及gettimeofday()函数的使用方法

Linux下时间/时区的设置 Linux机器上的时间比较复杂,有各式各样的时钟和选项等等。机器里有两个时钟,硬件时钟从根本上讲是CMOS时钟,而系统时钟是由内核维护的。 1. 修改硬件时钟...
  • linyangspring
  • linyangspring
  • 2014-04-03 14:50:04
  • 1108

Linux时间函数之 gettimeofday() 函数之使用方法

Linux时间函数之 gettimeofday() 函数之使用方法
  • hbtj_1216
  • hbtj_1216
  • 2016-03-12 14:38:09
  • 2035

Linux下时间输出格式精确到微秒-gettimeofday

#include int gettimeofday(struct timeval*tv, struct timezone *tz); 其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果:...
  • hanghang121
  • hanghang121
  • 2015-11-13 11:43:00
  • 2186

linux gettimeofday 时间转换成标准格式

linux gettimeofday 时间转换成标准格式 转自:http://biancheng.dnbcw.info/c/277593.html #include #include ...
  • yueguanyun
  • yueguanyun
  • 2016-07-05 17:36:01
  • 2816

gettimeofday----LINUX下的C源程序——统计机器反应时间的

  • 2008年12月06日 17:46
  • 1020B
  • 下载

32位linux下使用gettimeofday获取毫秒一直返回负数记录

之前为了测试C++中代码执行消耗的时间,所以写了这么一个函数: long long __getmstime() { timeval tv; gettimeofday(&tv, NULL); ...
  • shan165310175
  • shan165310175
  • 2014-11-24 20:14:15
  • 1989

Linux时间函数gettimeofday() 简介和实例测试

Linux时间函数gettimeofday() 简介和实例测试 一、gettimeofday      The  functions can gives the numbe...
  • qq_37858386
  • qq_37858386
  • 2017-12-01 10:40:23
  • 142
    个人资料
    持之以恒
    等级:
    访问量: 12万+
    积分: 2640
    排名: 1万+
    共同进步
    感兴趣的朋友可以加入我的QQ群,一起讨论学习,共同进步。
    群号:220204146,483989858
    最新评论