Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

C標準ライブラリtime.hのclock_gettime関数

C標準ライブラリtime.hはその名とおり、時間を扱う関数です。
これのclock_gettime関数は内部時刻を呼び出す機能を持ちます。
類似した関数にgettimeofday関数がありますが、これは2008年段階から将来廃止予定に指定されています。

実際のところ

clock_gettime

引数はclockid_t型、timespec構造体の順番。
clockid_t型はクロックの識別子

  struct timespec tp;
  result = clock_gettime(CLOCK_REALTIME, &tp);

timespec構造体の定義は以下の通り。
ナノ秒までサポートしております。

struct timespec {
    time_t   tv_sec;        /* seconds */
    long     tv_nsec;       /* nanoseconds */
};

gettimeofday

getimeofdayは引数に時間を扱うtimeval構造体とタイムスタンプ指定をもちます。

廃止予定のgettimeofday関数で呼び出させる時間用構造体timevalは
秒以下をsuseconds_tで取り扱っており、long型で扱っているtimespecとはちょっと構造が違います。

struct timeval {
    time_t      tv_sec;     /* 秒 */
    suseconds_t tv_usec;    /* マイクロ秒 */
};