【发布时间】:2012-08-27 22:49:20
【问题描述】:
由于/usr/share/zoneinfo 系统数据库更新相当频繁,我希望能够在一个运行时间很长的 C++ 程序中动态加载(和重新加载)它。
现在我知道标准库会使用这个数据库,但我怀疑它是否提供动态重新加载(或者至少我在 Google 上找不到任何关于它的信息。)
我可以使用任何 C 或 C++ 库或代码来执行此操作吗?
【问题讨论】:
-
我能想到的一种非常丑陋的方法是调用一个外部进程,该进程通过 C 标准库加载时区数据,然后对其进行序列化并通过管道将其发送到父进程。不过,我不想这样做。
-
你总是可以尝试通过下载标准库的源代码来查找,并检查时区函数,看它是每次加载数据库还是缓存它。
-
@JoachimPileborg 任何不缓存它的标准库都应该被打耳光。每次调用 localtime() 时查找、读取和解析这些 zoneinfo 文件对于许多应用程序来说都非常慢。
标签: c++ c linux timezone zoneinfo