我正在QNX平台上使用C语言编写记录器,使用Momnetics以下列格式打印时间
2010-11-02 14:45:15.000
我可以使用
获取日期,小时,分钟和秒 time(&timeSpec);
struct tm gmt;
int iSysTimeSec = timeSpec;
gmtime_r((time_t *)&iSysTimeSec, &gmt);
sprintf(&MsgStamp[0], SYS_MSG_STAMP_PRINTF_FORMAT, gmt.tm_year+1900, gmt.tm_mon + 1, gmt.tm_mday, gmt.tm_hour, gmt.tm_min, gmt.tm_sec, iSysTimeMs );
问题是如何使用QNX Momentics获得毫秒粒度。
我尝试使用QNX特定的颗粒度毫秒 int iSysTimeMs =((ClockCycles()* 1000)/ SYSPAGE_ENTRY(qtime) - > cycles_per_sec)%1000;
但我想做这个POSIX方式,以便它是可移植的。我们怎么做?
谢谢! 文卡塔
答案 0 :(得分:2)
在QNX6中您可以使用clock_gettime来获得最大粒度 系统允许的。
struct timespec start;
clock_gettime( CLOCK_REALTIME, &start);
答案 1 :(得分:0)
gettimeofday()
系统调用将返回一个结构,其中包含当前Unix时间(以秒为单位)和属于当前秒数的微秒数。
获取总微秒数:
struct timeval tv;
gettimeofday(&tv, NULL);
u_int64_t now = tv.tv_sec * 1000000ULL + tv.tv_usec;