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