Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用C程序在ubuntu中永久设置时区_C_Date_Datetime_Ubuntu_Timezone - Fatal编程技术网

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

如何使用C程序在ubuntu中永久设置时区,c,date,datetime,ubuntu,timezone,C,Date,Datetime,Ubuntu,Timezone,当我写作时- root@XYZ:/home/timez#export TZ=UTC;日期 2014年11月13日星期四05:35:36 UTC 它可以更改日期和时区。我想要一个等价的C程序 我写了一个C程序,用代码在我的Ubuntu机器上设置时区- 系统(“出口TZ=CST6CDT;日期”) 我可以将CST中的日期视为输出,但该程序没有将Ubuntu时区设置为CST,它仍然是UTC。存在一个settimeofday调用,该调用继承自Unix V7甚至更早版本。。。用于在内核中设置时区值的。但我现

当我写作时-

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

2014年11月13日星期四05:35:36 UTC

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

我写了一个C程序,用代码在我的Ubuntu机器上设置时区-

系统(“出口TZ=CST6CDT;日期”)


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

存在一个
settimeofday
调用,该调用继承自Unix V7甚至更早版本。。。用于在内核中设置时区值的。但我现在的男人说:注意:时区不再使用;这些信息保存在内核之外

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

子对象继承其父对象的环境,但不能修改其父对象的环境

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


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

你试过这个'export TZ=CST6CDT;在进入C程序之前,终端上的date`命令?有效吗?时区信息保存在ubuntu的一个文件中。需要修改此文件:/etc/default/rcS,以指示RTC是否使用UTC或本地时间。然后需要更新此链接:/etc/localtime,以指向此目录中的正确条目:/usr/share/zoneinfo/。当然,到那时,您已经实现了(已经存在的)tzconfigutility@SantoshA当然,这个命令在任何给定时区的终端上都能正常工作。但是,不能通过C程序工作。@user3629249不推荐使用tzconfig命令。我想以编程方式执行此任务出口TZ=CST6CDT;date`命令在任何给定时区的终端上都可以正常工作。但是,不能通过C程序工作。我尝试了system(),exec(),但它没有改变终端日期和时区。