2

我正在使用 Monetics 在 QNX 平台上使用 C 语言以下列格式打印时间

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 方式进行操作,以便它是可移植的。我们如何做到这一点?

谢谢!文卡塔

4

2 回答 2

2

在 QNX6 中,您可以使用 clock_gettime 来获得系统允许的最大粒度。

struct timespec start;
clock_gettime( CLOCK_REALTIME, &start);
于 2010-11-03T10:25:38.783 回答
0

系统调用将返回一个结构,该gettimeofday()结构以秒为单位保存当前 Unix 时间和属于当前秒的微秒数。

要获得总微秒数:

struct timeval tv;
gettimeofday(&tv, NULL);
u_int64_t now = tv.tv_sec * 1000000ULL + tv.tv_usec;
于 2010-11-03T10:26:30.870 回答