获取qemu系统当前时间(纳秒级)并输出到log的C实现
2018-01-09 09:46
1746 查看
主要过程:
1.获取纳秒级系统时间
2.将该输出重定向至log
主要函数:
1.clock_gettime
2.write_log
函数分析:
1.时间函数:
包含于头文件stdio.h和time.h中;具体的实现有以下几种
(1). Middleware对POSIX提供的标准计时器API进行封装,主要提供了两种类型的时钟的封装。一种是CLOCK_REALTIME,另一种是CLOCK_MONOTONIC。对与man手册的解释是:
CLOCK_REALTIME: Systemwide realtime clock. 系统范围内的实时时钟。用的是绝对时间,当系统时钟源被改变,会受到影响
CLOCK_MONOTONIC:Represents monotonic time. Cannot be set.表示单调时间,不能被设置,它表示的是体统启动至今的时间。
(2). 至于说为何采用clock_gettime()函数,是因为它提供精确到纳秒级,qemu是采用纳秒级的时间函数的。
2.输出重定向
调用write_log(pFile, format, …);方法写日志;
会使用到va_list :va_list 是在C语言中解决变参问题的一组宏,所在头文件:#include
解析:
va_list (ap):定义va_list类型的变量ap
va_start(ap,v):初始化,将ap指针指向第一个可变参数的地址
va_arg(ap,t):获取当前指针指向的资源,并将指针指向下一位
va_end:释放va_list
编译:
gcc time.c -o time
结果:
61575921805135
running!!!
参考链接:
http://blog.csdn.net/aihao1984/article/details/5953668
http://blog.csdn.net/subaofa/article/details/53609857
1.获取纳秒级系统时间
2.将该输出重定向至log
主要函数:
1.clock_gettime
2.write_log
函数分析:
1.时间函数:
包含于头文件stdio.h和time.h中;具体的实现有以下几种
(1). Middleware对POSIX提供的标准计时器API进行封装,主要提供了两种类型的时钟的封装。一种是CLOCK_REALTIME,另一种是CLOCK_MONOTONIC。对与man手册的解释是:
CLOCK_REALTIME: Systemwide realtime clock. 系统范围内的实时时钟。用的是绝对时间,当系统时钟源被改变,会受到影响
CLOCK_MONOTONIC:Represents monotonic time. Cannot be set.表示单调时间,不能被设置,它表示的是体统启动至今的时间。
(2). 至于说为何采用clock_gettime()函数,是因为它提供精确到纳秒级,qemu是采用纳秒级的时间函数的。
2.输出重定向
调用write_log(pFile, format, …);方法写日志;
会使用到va_list :va_list 是在C语言中解决变参问题的一组宏,所在头文件:#include
#include <stdio.h> #include <stdarg.h> #include <time.h> #include <inttypes.h> static inline uint64_t time_now(void) { struct timespec time; clock_gettime(CLOCK_MONOTONIC, &time); return ((uint64_t) time.tv_sec) * 1000000000 + time.tv_nsec; } int write_log(FILE* pFile,const char *format,...) { va_list arg; int done; va_start (arg,format); uint64_t time = time_now(); fprintf(pFile,"%"PRIu64"\n",time); done = vfprintf(pFile,format,arg); va_end(arg); fflush(pFile); return done; } int main() { FILE* pFile = fopen("time.txt","a"); write_log(pFile,"%s\n","running!!!"); fclose(pFile); return 0; }
解析:
va_list (ap):定义va_list类型的变量ap
va_start(ap,v):初始化,将ap指针指向第一个可变参数的地址
va_arg(ap,t):获取当前指针指向的资源,并将指针指向下一位
va_end:释放va_list
编译:
gcc time.c -o time
结果:
61575921805135
running!!!
参考链接:
http://blog.csdn.net/aihao1984/article/details/5953668
http://blog.csdn.net/subaofa/article/details/53609857
相关文章推荐
- Cocos2d-x中用C++获取当前系统时间,实现跨平台
- JAVA中获取当前系统时间,日期并格式化输出
- 获取系统当前时间,完成格式化,得到一个字符串。例如”201608130743”(指年月日时分)。再随机取3个小于10的整数,分别插入到 字符串的年、月、日后面,完成输出。
- cocos2d-x获取当前系统时间,实现跨平台
- Linux下获取系统当前时间函数实现
- C或C++调用Windows系统函数 实现延时 或 获取当前时间的处理
- java中获取当前系统时间,日期并格式化输出
- mktime函数实现获取当前系统时间
- java中获取当前系统时间,日期并格式化输出
- JS获取系统当前时间并格式化输出小函数
- QT 获取当前系统时间并格式化输出
- java实现获取当前系统时间
- java中获取当前系统时间以及过半小时之后的时间的实现
- java中获取当前系统时间,日期并格式化输出
- 最简单实现获取当前系统时间的方法
- C#实现在控制台输出当前系统时间的方法
- 实现系统函数time,获取当前时间与UTC的间隔
- JAVA获取当前系统时间和日期并格式化输出总结
- java中获取当前系统时间,日期并格式化输出
- c++获取当前系统时间并输出到文件中