スポンサーリンク

GETTIMEOFDAY(2) FreeBSD システムコールマニュアル GETTIMEOFDAY(2)

名称

gettimeofday, settimeofday − 日付と時刻の取得 / 設定

ライブラリ

標準 C ライブラリ (libc, −lc)

書式

#include <sys/time.h>

int

gettimeofday(struct timeval *tp, struct timezone *tzp);

int

settimeofday(const struct timeval *tp, const struct timezone *tzp);

解説

注記: timezone はもはや使用されません。この情報はカーネルの外側に保持され ます。

システムが保持している現在のグリニッジ時刻と現在の時間帯は gettimeofday() システムコールから得られ、 settimeofday() システムコールで設定されます。 時刻は 1970 年 1 月 1 日の深夜 (0 時) からの秒数とマイクロ秒数で表現され ます。システムクロックの分解能はハードウェアで決まり、時刻は継続的または ‘‘チック’’ 単位で更新されます。 tp または tzp が NULL の場合、対応する時 刻情報は返されず、また設定されません。

tptzp の指す構造体は <sys/time.h> 内に次のように定義されています:

struct timeval {

long

tv_sec;

/* 1970 年 1 月 1 日からの秒数 */

long

tv_usec;

/* およびマイクロ秒数 */

};

struct timezone {

int

tz_minuteswest; /* グリニッジから西方向への偏差 */

int

tz_dsttime;

/* 夏時間補正のタイプ */

};

timezone 構造体は、ローカル時間帯 (グリニッジから西向きに分単位で測定) と フラグを含みます。フラグが 0 でない場合は、1 年の適切な時期に夏時間がその 地域に適用されることを示します。

スーパユーザだけが時刻または時間帯を設定できます。システムが securelevel >= 2 (init(8) を参照) で実行される場合は、最大 1 秒のみ時刻を進めるか遅ら せることしかできません。この制限が課されるのは、悪意のあるスーパユーザが ファイルに任意のタイムスタンプを設定するのを防止するためです。システム時 刻は、システムが安全モードにあっても adjtime(2) システムコールを使用して 制限なしに後方に調整できます。

戻り値

成功して終了したときには値 0 を返します。そうでない場合、値 -1 が返され、 グローバル変数 errno が設定されてエラーを示します。

エラー

次のエラーコードが errno に設定されます:

       [EFAULT]

引数アドレスが無効なメモリを参照しました。

[EPERM]
スーパユーザ以外のユーザが時刻を設定しようとしました。

関連項目

date(1), adjtime(2), clock_gettime(2), ctime(3), timeradd(3), clocks(7), timed(8)

歴史

gettimeofday() システムコールは 4.2BSD ではじめて登場しました。

FreeBSD 10.0 May 26, 1995 FreeBSD 10.0

スポンサーリンク