質問
私は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モーメントを使用してミリ秒の粒度を取得するにはどうすればよいですか。
QNX固有のintyStimems =((clockcycles() * 1000) / syspage_entry(qtime) - > cycles_per_sec)%1000;
しかし、私はそれがポータブルになるようにこのPosixの方法をやりたいです。これをどのように行いますか?
ありがとう!ベンカタ
解決
QNX6では、Clock_GetTimeを使用して、システムによって最大粒度を許可することができます。
struct timespec start;
clock_gettime( CLOCK_REALTIME, &start);
他のヒント
gettimeofday()
システムコールは、現在のUnix時間を秒単位で保持する構造と、現在の2秒に属するマイクロ秒数を返します。
マイクロ秒の総数を取得するには:
struct timeval tv;
gettimeofday(&tv, NULL);
u_int64_t now = tv.tv_sec * 1000000ULL + tv.tv_usec;
所属していません StackOverflow