互联网将遭遇“千年虫”式问题 30年后或毁灭

由于32位Unix系统时间采用32位整数表示,2038年1月19日03:14:07后将发生溢出问题,导致时间回溯至1901年,这可能会使依赖于正确时间戳的应用程序出现故障。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3月17日消息,据国外媒体报道,日前有业内人士指出,国际互联网将于30年后遭遇“千年虫”式问题,并可能导致网络崩溃。该问题被称为“2038 Bug”,与2000年的“千年虫”问题类似。到2038年,Unix系统时间所使用的32位整数将溢出。届时,时间可能以负数形式出现。当然,更为关键的是,所有程序都将出现问题。因为程序所能够识别的时间将变为1901年,而不是2038年。尽管“千年虫”问题并未给全球带来太大的灾难,但“2038 Bug”问题仍不容忽视。因为2006年的AOL Web服务器崩溃就是最好的证明。

延伸阅读:

什么是Y2038 bug

  Time_t 是C/C++ 等编程语言在内部代表/存储日期和时间的一种数据类型。Time_t实际上是一个代表秒数的整数,当它的值为0时,代表的时间是1970年1月1日12: 00:00;当Time_t=60时,则表示1970年1月1日12:01:00,依此类推。 所有32位电脑系统都用带符号32位整型来存储time_t的值,也就是说t_time只能用31位二进制数来表示(第一位用来表示正负号),而其最大值转换为十进制是2147483647,换算成日期和时间刚好是2038年1月19日03:14:07am(GMT),而这一秒过后,t_time的值将变成-2147483647,代表的是 1901年12月13日8:45:52pm,这样32位软硬件系统的日期时间显示就都乱套了。另外,无法接受time_t为负值的其他功能也将返回错误。举个实际的例子来说,登陆上Yahoo messenger,给好友发个消息,恩没问题,现在把系统时间更改为2038年1月19日03:14:07am,此时如果再发消息Yahoo messenger就将崩溃。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值