0

カーネルログと同じ形式でログ出力を書きたい:

[   11.947248] fsl-gianfar ffe24000.ethernet eth0: Link is Up

タイムスタンプには、カーネル時間と同じ時間参照が必要です。これは、ログメッセージがカーネルで行われると同時に発行される場合、タイムスタンプは同じ値を持つ必要があることを意味します。

には定義されclock_gettimeていないクロックの開始点があります。したがって、すべてのプログラムのタイムスタンプは、同時に作成された場合でも異なる値になります。

clock_gettime(CLOCK_REALTIME, &ts);
clock_gettime(CLOCK_MONOTONIC, &ts);

使用gettimeofdayすると、定義上一致しない Unix エポック以降の時間が取得されます。

この関数localtime()は稼働時間を返しますが、粒度は秒単位ですが、もっと必要です...


更新それはclock_gettime(CLOCK_REALTIME, &ts)私が望むことをするべきだと思われます...しかし、eglibcCLOCK_MONOTONIC代わりに戻ってくるようです。

4

1 に答える 1

0

アイデアは、最初に CLOCK_MONOTONIC のオフセットを見つけることです。/proc/uptimeそのために一度読んでください。次に、オフセットと CLOCK_MONOTONIC を使用して、ログに記録されたすべてのイベントの時間を出力します。

于 2015-11-26T14:01:43.860 に答える