根据POSIX.1-2008 标准,time()
在某些系统中作为系统调用实现。
在哪些系统中会出现这种情况?
我担心的是,当time()
系统调用时,2038 年 1 月 17 日之后的所有日期都会返回一个大的负整数,这可能会破坏某些程序。
答案1
仅在保留 32 位整数的系统上,这既不是 POSIX 2008 强制要求的,也不是普遍做法。time_t
OpenBSD于 2013 年进入 64 位。然而!需要审核各个应用程序以查看它们是否使用 32 位纪元,因此操作系统简单地使用更大的整数类型是必要的,但还不够。
正如 Johan Myréen 指出的那样,time
系统调用还是其他内容与 2038 问题无关:受支持的系统(以及在其上运行的应用程序)将得到修复,而不受支持的系统(和应用程序)则不会。