Linux时间函数gettimeofday() 简介和实例测试
来源:互联网 发布:谷嫂淘宝 蓝盾 编辑:程序博客网 时间:2024/06/05 09:24
Linux时间函数gettimeofday() 简介和实例测试
一、gettimeofday
The functions can gives the number of seconds and microseconds since the Epoch
获得当前精确时间(1970年1月1日到现在的时间),精度可以达到微妙。
二、相关的结构体
1、struct timeval
{
long tv_sec;/*秒*/
long tv_usec;/*微妙*/
};
2、struct timezone
{
int tz_minuteswest;/*和greenwich 时间差了多少分钟*/
int tz_dsttime;/*type of DST correction*/
}
3、在gettimeofday()函数中tv或者tz都可以为空。如果为空则就不返回其对应的结构体。
4、函数执行成功后返回0,失败后返回-1,错误代码存于errno中。
三、关于在32位机在获取时间返回负数的问题。
long类型在32位机子上占用4个字节,在64位机子上占用8个字节,tv.tv_sec * 1000这里的计算应该没有进行类型转换,之后会得到一个溢出的负数,之后返回的时候虽然强转成了long long,但还是返回负数,为时已晚。需要先把tv.tv_sec转成long long类型,这样就不会造成溢出了。请看下面例子里面的在32位机上调用的get_current_time_32bit函数和64位机上面调用的get_current_time_64bit函数的区别。
四、linux下测试C代码:
#include <sys/time.h> #include <stdio.h> #include <unistd.h> long long get_current_time_32bit(void) {struct timeval tv;gettimeofday(&tv, NULL);return ((long long)tv.tv_sec) * 1000 + tv.tv_usec / 1000;} unsigned long long get_current_time_64bit(void) {struct timeval tv;gettimeofday(&tv, NULL);return tv.tv_sec * 1000 + tv.tv_usec / 1000;} int main(void) { struct timeval tv; int i;printf("sizeof(long)=%ld,sizeof(unsigned long long )=%ld\n",sizeof(long),sizeof(unsigned long long )); gettimeofday(&tv, NULL); printf(" tv_usec = %ld tv_sec = %ld\n", tv.tv_usec, tv.tv_sec); for(i = 0; i < 100; i++){ gettimeofday(&tv, NULL); printf("%d) tv_usec = %ld tv_sec = %ld\n", i, tv.tv_usec, tv.tv_sec); printf("\n(64bit)current time is %lld ms\n",get_current_time_64bit());printf("\n(32bit)current time is %lld ms\n",get_current_time_32bit()); sleep(1); } return 0; }
五、测试结果
- Linux时间函数gettimeofday() 简介和实例测试
- linux时间函数time和gettimeofday
- linux时间函数gettimeofday解析
- linux时间函数gettimeofday解析
- Linux时间函数之gettimeofday()函数
- linux gettimeofday()函数取出时间打印方法
- Linux下系统时间函数--->gettimeofday
- linux C 高精度时间函数:gettimeofday()
- 时间函数gettimeofday()
- 谈谈时间函数gettimeofday
- Linux毫秒时间gettimeofday
- Linux时间函数之gettimeofday()函数之使用方法
- Linux时间函数之gettimeofday()函数之使用方法
- Linux时间函数之gettimeofday()函数之使用方法
- Linux时间函数之gettimeofday()函数之使用方法
- Linux时间函数之gettimeofday()函数之使用方法
- Linux时间函数C++之gettimeofday()函数之使用方法
- Linux时间函数之gettimeofday()函数之使用方法
- Linq 左连接查询和右连接查询
- pygame经典sprite精灵类
- liunx进程通信2
- 20171201日记账流水
- 我的Java设计模式-代理模式
- Linux时间函数gettimeofday() 简介和实例测试
- Mac Notes备忘录崩溃打不开:Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '
- 报名 | 交通运输大数据分析与应用实践思享会
- 现代IM系统中消息推送和存储架构的实现
- git在python 里面如何使用
- mysql的两个小问题
- python基础篇之bool类型
- 送你一份深度学习资源&教程!
- Source Insight 设置和快捷键大全