EN JA
GETTIMEOFDAY(2)
GETTIMEOFDAY(2) FreeBSD System Calls Manual GETTIMEOFDAY(2)

名称

gettimeofday, settimeofday日付と時刻を取得する/設定する

ライブラリ

Standard C Library (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 時) から秒とマイクロ秒単位で表現されます。システムクロックの分解能は、ハードウェア依存で、時刻は、連続的に、または“tick” (チック) 単位で更新されます。 tp または tzp が NULL であるなら、関連する時刻の情報は、返されず、設定されません。

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

struct timeval { 
 time_t  tv_sec;  /* 秒 */ 
 suseconds_t tv_usec; /* とマイクロ秒 */ 
}; 
 
struct timezone { 
 int tz_minuteswest; /* グリニッジの西の分 */ 
 int tz_dsttime; /* 夏時間補正のタイプ */ 
};

timezone 構造体は、ローカル時間帯 (グリニッジから西方向の時間の分単位で測定) とフラグを示し、フラグが 0 以外であるなら、夏時間が、その年の適切な一時期にローカルに適用されることを示します。

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

戻り値

Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.

エラー

次のエラーコードが errno に設定されます:
[ EFAULT]
引数アドレスが不正なメモリを参照しました。
[ EPERM]
スーパユーザ以外のユーザが時刻を設定しようと試みました。

歴史

gettimeofday() システムコールは、 4.2BSD ではじめて登場しました。
May 26, 1995 FreeBSD