1 .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992
3 .\" %%%LICENSE_START(VERBATIM)
4 .\" Permission is granted to make and distribute verbatim copies of this
5 .\" manual provided the copyright notice and this permission notice are
6 .\" preserved on all copies.
8 .\" Permission is granted to copy and distribute modified versions of this
9 .\" manual under the conditions for verbatim copying, provided that the
10 .\" entire resulting derived work is distributed under the terms of a
11 .\" permission notice identical to this one.
13 .\" Since the Linux kernel and libraries are constantly changing, this
14 .\" manual page may be incorrect or out-of-date. The author(s) assume no
15 .\" responsibility for errors or omissions, or for damages resulting from
16 .\" the use of the information contained herein. The author(s) may not
17 .\" have taken the same level of care in the production of this manual,
18 .\" which is licensed free of charge, as they might when working
21 .\" Formatted or processed versions of this manual, if unaccompanied by
22 .\" the source, must acknowledge the copyright and authors of this work.
25 .\" Modified by Michael Haardt (michael@moria.de)
26 .\" Modified 1993-07-23 by Rik Faith (faith@cs.unc.edu)
27 .\" Modified 1994-08-21 by Michael Chastain (mec@shell.portal.com):
28 .\" Fixed necessary '#include' lines.
29 .\" Modified 1995-04-15 by Michael Chastain (mec@shell.portal.com):
30 .\" Added reference to adjtimex.
31 .\" Removed some nonsense lines pointed out by Urs Thuermann,
32 .\" (urs@isnogud.escape.de), aeb, 950722.
33 .\" Modified 1997-01-14 by Austin Donnelly (and1000@debian.org):
34 .\" Added return values section, and bit on EFAULT
35 .\" Added clarification on timezone, aeb, 971210.
36 .\" Removed "#include <unistd.h>", aeb, 010316.
37 .\" Modified, 2004-05-27 by Michael Kerrisk <mtk.manpages@gmail.com>
38 .\" Added notes on capability requirement.
40 .\"*******************************************************************
42 .\" This file was generated with po4a. Translate the source file.
44 .\"*******************************************************************
46 .\" Japanese Version Copyright (c) 1998 HANATAKA Shinya
47 .\" all rights reserved.
48 .\" Translated 1998-05-11, HANATAKA Shinya <hanataka@abyss.rim.or.jp>
49 .\" Updated & Modified 2001-06-02, Yuichi SATO <ysato@h4.dion.ne.jp>
50 .\" Updated & Modified 2001-12-23, Yuichi SATO
51 .\" Updated & Modified 2003-09-06, Yuichi SATO <ysato444@yahoo.co.jp>
52 .\" Updated & Modified 2004-12-30, Yuichi SATO
53 .\" Updated 2006-07-23, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
54 .\" Updated 2009-04-13, Akihiro MOTOKI, LDP v3.20
55 .\" Updated 2012-04-30, Akihiro MOTOKI <amotoki@gmail.com>
56 .\" Updated 2012-05-08, Akihiro MOTOKI <amotoki@gmail.com>
57 .\" Updated 2013-03-26, Akihiro MOTOKI <amotoki@gmail.com>
59 .TH GETTIMEOFDAY 2 2012\-04\-26 Linux "Linux Programmer's Manual"
61 gettimeofday, settimeofday \- 時刻を取得/設定する
64 \fB#include <sys/time.h>\fP
66 \fBint gettimeofday(struct timeval *\fP\fItv\fP\fB, struct timezone *\fP\fItz\fP\fB);\fP
68 \fBint settimeofday(const struct timeval *\fP\fItv\fP\fB, const struct timezone *\fP\fItz\fP\fB);\fP
72 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7) 参照):
75 \fBsettimeofday\fP(): _BSD_SOURCE
77 関数 \fBgettimeofday\fP() と \fBsettimeofday\fP() は時刻とタイムゾーンを取得または設定する。 \fItv\fP 引き数は
78 \fIstruct timeval\fP である (\fI<sys/time.h>\fP で定義されている):
83 time_t tv_sec; /* 秒 */
84 suseconds_t tv_usec; /* マイクロ秒 */
89 これにより紀元 (the Epoch: \fBtime\fP(2) を参照) からの秒とマイクロ秒が取得できる。 \fItz\fP 引き数は \fIstruct
95 int tz_minuteswest; /* グリニッジ標準時との差 (西方に分単位) */
96 int tz_dsttime; /* 夏時間調整の型 */
101 .\" FIXME . The compilation warning looks to be going away in 2.17
102 .\" see glibc commit 4b7634a5e03b0da6f8875de9d3f74c1cf6f2a6e8
103 .\" The following is covered under EPERM below:
105 .\" Only the superuser may use
106 .\" .BR settimeofday ().
107 \fItv\fP や \fItz\fP が NULL の場合、対応する構造体の設定/取得は行われない
108 (ただし、\fItv\fP が NULL の場合には、コンパイル時の警告が発生する)。
110 \fItimezone\fP 構造体の利用は廃止予定とされている;
111 通常は \fItz\fP 引き数に NULL を指定すべきである (下記の「注意」を参照)。
113 Linux では、 \fBsettimeofday\fP() システムコールに関連して、独特の「クロックのズレ
114 (warp clock)」が存在する場合がある。 これは (ブート後の) 最初の呼び出しで
115 \fItz\fP 引き数が NULL でなく、 \fItv\fP 引き数が NULL で \fItz_minuteswest\fP フィールド
116 が 0 でない場合に起こる (この場合 \fItz_dsttime\fP フィールドは 0 にすべきである)。
117 このような場合、 \fBsettimeofday\fP() は CMOS クロックが地方時 (local time) であり、
118 UTC システム時間を得るためには、\fItz_minuteswest\fP の分だけ増加させなくてはなら
119 ないとみなしてしまう。 疑いもなく、この機構を使うことは良い考えではない。
121 \fBgettimeofday\fP() と \fBsettimeofday\fP() は成功すると 0 を返し、失敗した場合は \-1 を返す (この場合は
122 \fIerrno\fP が適切に設定される)。
126 \fItv\fP か \fItz\fP のどちらかがアクセス可能なアドレス空間外を指している。
129 タイムゾーン (または他の何か) が不正である。
132 呼び出し元プロセスに \fBsettimeofday\fP() を呼び出すための十分な特権がない。 Linux では \fBCAP_SYS_TIME\fP
133 ケーパビリティ (capability) が必要である。
135 SVr4, 4.3BSD に準拠する。 POSIX.1\-2001 は \fBgettimeofday\fP() については記述しているが、
136 \fBsettimeofday\fP() については記述していない。 POSIX.1\-2008 では \fBgettimeofday\fP()
137 は廃止予定とされており、 代わりに \fBclock_gettime\fP(2) の使用が推奨されている。
139 \fBgettimeofday\fP() が返す時刻は、システム時間の不連続な変化
140 (例えば、システム管理者がシステム時間を手動で変更した場合など)
141 の影響を\fI受ける\fP。単調増加するクロックが必要な場合は、
142 \fBclock_gettime\fP(2) を参照してほしい。
144 \fItimeval\fP 構造体を操作するためのマクロの説明は \fBtimeradd\fP(3) にある。
146 昔は \fIstruct timeval\fP のフィールドは \fIlong\fP 型であった。
149 .\" been and will not be supported by libc or glibc.
150 .\" Each and every occurrence of this field in the kernel source
151 .\" (other than the declaration) is a bug.
152 \fItz_dsttime\fP は Linux でこれまで使われたことはない。
153 したがって、以下は純粋に歴史的な興味から書かれたものである。
155 \fItz_dsttime\fP フィールドには (下記に示す) シンボル定数が格納される。
156 これは一年のうちでいつ夏時間 (Daylight Savings Time) を実施するかを示している
157 (注意: その値は年間を通した定数である: 夏時間が実施中であることを示すわけではなく、
158 アルゴリズムを選択しているだけである)。 夏時間は以下のように定義される:
162 \fBDST_NONE\fP /* 夏時間を採用していない */
164 \fBDST_USA\fP /* アメリカ合衆国式夏時間 */
166 \fBDST_AUST\fP /* オーストラリア式夏時間 */
168 \fBDST_WET\fP /* 西ヨーロッパ式夏時間 */
170 \fBDST_MET\fP /* 中央ヨーロッパ式夏時間 */
172 \fBDST_EET\fP /* 東ヨーロッパ式夏時間 */
174 \fBDST_CAN\fP /* カナダ */
176 \fBDST_GB\fP /* グレートブリテンおよびアイルランド */
178 \fBDST_RUM\fP /* ルーマニア */
180 \fBDST_TUR\fP /* トルコ */
182 \fBDST_AUSTALT\fP /* 1986年に移行されたオーストラリア式 */
186 当然のことながら、夏時間がどの期間に実施されるかを国ごとの簡単なアルゴリズムで
187 導くことができないことが判明した。 実際、夏時間の期間は予測不可能な政治的決定で
188 決定される。そのため、この方法でタイム・ゾーンを表すことは断念された。
189 Linux において \fBsettimeofday\fP() を呼び出すときは、
190 \fItz_dsttime\fP フィールドを 0 にするべきである。
192 \fBdate\fP(1), \fBadjtimex\fP(2), \fBclock_gettime\fP(2), \fBtime\fP(2),
193 \fBctime\fP(3), \fBftime\fP(3), \fBtimeradd\fP(3), \fBcapabilities\fP(7),
196 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.76 の一部
197 である。プロジェクトの説明とバグ報告に関する情報は
198 http://www.kernel.org/doc/man\-pages/ に書かれている。