如何使用 C 在 linux 中指定时区

Posted

技术标签:

【中文标题】如何使用 C 在 linux 中指定时区【英文标题】:How to specify timezone in linux using C 【发布时间】:2011-03-24 21:25:45 【问题描述】:

我试图设置我的系统的时区,并尝试使用 settimeofday(),它以时区结构作为参数,但只是读到该结构现在已过时 (http://linux.about.com/library/cmd/blcmdl2_settimeofday.htm) 我怎么能去关于这样做?

提前致谢。

编辑:呃,我觉得自己很愚蠢。

我创建了一个link.c并编译了它:

#include <stdio.h>

void main()

    printf("This is the link \n");

创建了一个target.c,并编译它:

#include <stdio.h>

void main()

    printf("This is the target \n");

然后在测试程序中尝试了符号链接功能:

#include <unistd.h>

void main()

    int garbage = symlink("/home/imandhan/pythonTests/link", "/home/imandhan/pythonTests/target");
    printf(garbage);

由于某种原因,这给了我一个分段错误。难道我做错了什么?

【问题讨论】:

你为什么要这样做?系统管理是从命令行和精心设计的脚本完成的,而不是从 C 语言。 哦,对了。返回 -1。我的符号链接语法错了吗? 嗯,这是为了实习,他们希望我为视频会议设备编写这些函数,我根据传递给函数的结构设置时间、时区和内容。我还没有完全了解大局,因为我刚开始.. @iman453 docs.hp.com/en/B9106-90009/symlink.2.html 检查 errno 以了解具体错误。 @Vitor 哦,我不知道 errno 是什么。这个超级好用!谢谢。我做错的事情是我已经创建了一个带有链接名称的文件...... 【参考方案1】:

请参阅tzset(3) 了解为应用程序设置时区。

对于整个系统 - 符号链接 /etc/localtime/usr/share/zoneinfo/ 下的相应文件。

【讨论】:

...对于单个会话/用户,设置TZ 环境变量。 感谢您的回复。只是为了确保我明白了...我想在 C 中为整个系统设置时区。所以我需要找到某种方法将 /etc/localtime 符号链接到 /usr/share/zoneinfo 下的文件吗?使用 tzset() 是行不通的。抱歉,我真的是 linux 新手,我的工作系统没有管理员权限来尝试弄乱系统。 呃,我觉得自己很愚蠢。我创建了一个link.c 并编译了它:#include void main() printf("This is the link \n"); 创建了一个 target.c,并编译它: #include void main() printf("This is the target \n"); 然后在测试程序中尝试了符号链接功能:#include void main() int Garbage = symlink("/home/imandhan/pythonTests/link", "/home/imandhan/pythonTests/target" ); printf(垃圾);由于某种原因,这给了我一个分段错误。我做错了吗?

以上是关于如何使用 C 在 linux 中指定时区的主要内容,如果未能解决你的问题,请参考以下文章

linux下如何将第一行中指定的字符全部替换掉

如何在 .cabal 中指定对外部 C 库的依赖?

如何在linux中指定用于套接字的接口

如何在makefile中指定头文件目录

如何导入日期和转换时区?

如何在eclipse中指定链接时使用的库版本?