time() 函数在哪些系统上充当系统调用?

time() 函数在哪些系统上充当系统调用?

根据POSIX.1-2008 标准time()在某些系统中作为系统调用实现。

在哪些系统中会出现这种情况?

我担心的是,当time()系统调用时,2038 年 1 月 17 日之后的所有日期都会返回一个大的负整数,这可能会破坏某些程序。

答案1

仅在保留 32 位整数的系统上,这既不是 POSIX 2008 强制要求的,也不是普遍做法。time_tOpenBSD于 2013 年进入 64 位。然而!需要审核各个应用程序以查看它们是否使用 32 位纪元,因此操作系统简单地使用更大的整数类型是必要的,但还不够。

正如 Johan Myréen 指出的那样,time系统调用还是其他内容与 2038 问题无关:受支持的系统(以及在其上运行的应用程序)将得到修复,而不受支持的系统(和应用程序)则不会。

相关内容