time
Section: System Calls (2)
Updated: 2026-02-08
Index
JM Home Page
roff page
名前
time - 秒単位の時間を得る
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <time.h>
time_t time(time_t *_Nullable tloc);
説明
time() は、紀元 (Epoch; 1970-01-01 00:00:00 (UTC)) からの秒数で返します。
もし tloc が NULL でない場合、返り値は tloc の指しているメモリーにも格納されます。
返り値
成功した場合、紀元(the Epoch)からの経過秒数を返します。エラーの場合は ((time_t) -1)
を返し、エラーを表示するように、errno を設定します。
エラー
- EOVERFLOW
-
時刻を time_t の値で表すことはできません。これは、時刻が 2038-01-19 03:14:08 UTC 以降の場合、
実行形式が、32-bit time_t を使っていつつ、64ビットカーネルで実行すると発生する可能性があります。ただし、他の状況でシステムの時刻が
time_t の範囲外である場合、動作は未定義です。
- EFAULT
-
tloc がアクセス可能なアドレス空間の外を指しています (ただし「バグ」を参照)。
-
C ライブラリ time() ラッパー機能が vdso(7) によって提供された実装を起動するシステムでは
(カーネルにトラップが入らないように)、無効なアドレスが代わりに SIGSEGV シグナルをトリガーすることがあります。
バージョン
POSIX.1 では、指定した時刻と紀元との間の秒数を近似する変換式を使って、
「紀元からの経過秒数 (seconds since the Epoch)」 を定義しています。
この変換式では、4 で割り切れる年で、100 で割り切れない年はすべて閏年
(但し、400 で割り切れる年は閏年) であるという点も考慮されています。この
「紀元からの経過秒数」は、紀元と現在時刻との間で実際に経過した秒数とは違います。
なぜなら、閏秒が存在しますし、システムの時計を標準時間 (standard reference)
に同期させる必要もないからです。Linuxシステムは通常POSIXの要件に従い、
この値は閏秒を無視します。そのため、準拠するシステムではそれを一貫して解釈します。
詳細は POSIX.1 Rationale A.4.15 を参照してください。
2038 年以降に実行するアプリケーションでは、32 ビットよりも広い time_t の ABI
を使用する必要があります。time_t(3type)を参照してください。
C ライブラリ/kernel の違い
いくつかのアーキテクチャでは、time() の実装は vdso(7) で提供されます。
標準
C11, POSIX.1-2024.
履歴
SVr4, 4.3BSD, C89, POSIX.1-2001, V7.
バグ
このシステムコールから返されるエラーは、時刻が紀元の数秒 前であるという報告が成功した場合と区別できません。したがって、C
のライブラリラッパー関数はこのコールの結果として errno を設定することはありません。
tloc 引数は廃止されたため、新しいコードでは常に NULL にする必要があります。tloc が NULL
の場合、呼び出しが失敗することはありません。
関連項目
date(1), gettimeofday(2), ctime(3), ftime(3), time(7),
vdso(7)
Index
- 名前
-
- ライブラリ
-
- 書式
-
- 説明
-
- 返り値
-
- エラー
-
- バージョン
-
- C ライブラリ/kernel の違い
-
- 標準
-
- 履歴
-
- バグ
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.