2

Momneticsを使用して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 に答える