如何使用 C 程序在 ubuntu 中永久设置时区



当我写 -

root@XYZ:/home/timez# 导出 TZ=UTC; 日期

星期四 十一月 13 05:35:36 UTC 2014

它更改日期和时区。我想要一个等效的C程序。

我编写了一个 C 程序来使用代码在我的 Ubuntu 机器中设置时区 -

系统(" 导出 TZ=CST6CDT; 日期 ");

我可以看到 CST 中的日期作为输出,但该程序没有将 Ubuntu 时区设置为 CST,它仍然是 UTC。

存在

从Unix V7甚至之前继承的settimeofday调用...用于在内核中设置时区值。但是我现在的人现在说:注意:时区不再使用;这些信息被保留在内核之外

因此,在不到 20 年的系统中,时区仅保留在环境中。并且环境具有以下属性:

子项继承其父级的环境,但不能修改其父级的环境

这意味着任何 C 程序都可以通过简单的 setenv 调用来修改其 TZ,并且这个新时区将由它自己和它的所有子时区使用,但它永远无法修改启动它的 shell 的环境。唯一的可能性是 shell 程序提供的特殊 API,但我知道没有一个实现这样的事情。

我知道这是一个你无法回答的问题,但这是我能做的最好的事情......

相关内容

  • 没有找到相关文章

最新更新