TIME - Linux手册页

时间:2019-08-20 17:59:33  来源:igfitidea点击:

Linux程序员手册 第2部分
更新日期: 2017-09-15

名称

time-以秒为单位获取时间

语法

#include <time.h>
time_t time(time_t *tloc);

说明

time()返回时间,以从1970年1月1日00:00:00 +0000(UTC)开始的秒数开始。

如果tloc为非NULL,则返回值也存储在tloc指向的内存中。

返回值

成功后,返回自纪元以来的时间(以秒为单位)。发生错误时,将返回[[time_t)-1),并正确设置errno。

错误说明

EFAULT
tloc点位于您可访问的地址空间之外(但请参阅BUGS)。
在C库time()包装函数调用vdso(7)提供的实现的系统上(这样就不会有进入内核的陷阱),无效的地址可能会触发SIGSEGV信号。

遵循规范

SVr4、4.3BSD,C89,C99,POSIX.1-2001。 POSIX没有指定任何错误条件。

备注

POSIX.1使用近似于指定时间和纪元之间的秒数的公式来定义纪元以来的秒数。该公式考虑到以下事实:所有可以被4整除的年份都是leap年,但是可以被100整除的年份不是leap年,除非它们也可以被400整除,在这种情况下,它们就是leap年。该值与时间和纪元之间的实际秒数不同,这是由于leap秒,并且因为不需要将系统时钟同步到标准参考。目的是使自Epoch值以来的秒数解释保持一致;有关进一步的原理,请参见POSIX.1-2008原理A.4.15。

在Linux上,将tloc指定为NULL的time()调用不会因错误EOVERFLOW而失败,即使在time_t是带符号的32位整数且时钟滴答时间超过2 ** 31(2038-01-19)的ABI上03:14:08 UTC,忽略leap秒)。 (在自大纪元以来的秒数不适合time_t的情况下,POSIX.1允许但不要求EOVERFLOW错误。)相反,当系统时间超出time_t范围时,Linux上的行为是不确定的。打算在2038年之后运行的应用程序应使用time_t大于32位的ABI。

BUGS

从该系统调用返回的错误与成功的报告(时间距Epoch几秒钟)是无法区分的,因此C库包装器函数永远不会由于该调用而设置errno。

tloc参数已过时,在新代码中应始终为NULL。当tloc为NULL时,调用不会失败。

C library/kernel differences

在某些体系结构上,vdso(7)中提供了time()的实现。

另外参见

date(1),gettimeofday(2),ctime(3),ftime(3),time(7),vdso(7)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/