TIME(2)

名前
time - 秒単位の時間を得る

書式
#include <time.h>

 time_t time(time_t *tloc);

説明
time() は、紀元 (Epoch; 1970-01-01 00:00:00 (UTC)) からの秒数で返す。

もし tloc が NULL でなかったら返り値は tloc の指しているメモリーにも格納される。

返り値
成功した場合、紀元(the Epoch)からの経過秒数を返す。エラーの場合は ((time_t) -1) を返し、errno を設定する。

エラー

EFAULT
    tloc がアクセス可能なアドレス空間の外を指している (ただし「バグ」を参照)。

    On systems where the C library time() wrapper function invokes an implementation provided by the vdso(7) (so that there is no trap into the kernel), an invalid address may instead trigger a SIGSEGV signal.

準拠
SVr4, 4.3BSD, C89, C99, POSIX.1-2001. POSIX にはエラー状態の規定はない。

注意
POSIX.1 では、指定した時刻と紀元との間の秒数を近似する変換式を使って、
 「紀元からの経過秒数 (seconds since the Epoch)」 を定義している。 この変換式では、4 で割り切れる年で、100 で割り切れない年はすべて閏年 (但し、400 で割り切れる年は閏年) であるという点も考慮されている。 「紀元からの経過秒数」は、紀元と現在時刻との間で実際に経過した秒数と同じではない。 なぜならば、閏秒が存在するし、システムの時計を標準時間 (standard reference) に同期させる必要もないからである。 この定義の目的は、紀元からの経過秒数の解釈に一貫性を持たせることになる。 より詳しい原理は POSIX.1 Rationale A.4.15 を参照すること。

On Linux, a call to time() with tloc specified as NULL cannot fail with the error EOVERFLOW, even on ABIs where time_t is a signed 32-bit integer and the clock ticks past the time 2**31 (2038-01-19 03:14:08 UTC, ignoring leap seconds). (POSIX.1 permits, but does not require, the EOVERFLOW error in the case where the seconds since the Epoch will not fit in time_t.) Instead, the behavior on Linux is undefined when the system time is out of the time_t range. Applications intended to run after 2038 should use ABIs with time_t wider than 32 bits.

バグ
Error returns from this system call are indistinguishable from successful reports that the time is a few seconds before the Epoch, so the C library wrapper function never sets errno as a result of this call.

The tloc argument is obsolescent and should always be NULL in new code. When tloc is NULL, the call cannot fail.

  C library/kernel differences
On some architectures, an implementation of time() is provided in the vdso(7).

関連項目
 date(1), gettimeofday(2), ctime(3), ftime(3), time(7), vdso(7)

この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。