如何在 execl() 函数中更改时区(TZ=UTC)输出。
Posted
技术标签:
【中文标题】如何在 execl() 函数中更改时区(TZ=UTC)输出。【英文标题】:How to change time zone(TZ=UTC) output in execl() function. 【发布时间】:2018-05-29 18:03:56 【问题描述】:我正在使用运行一个二进制文件,例如。 'ls -la' 在我的 c 代码中使用 execl() 函数并读取子进程的返回状态。 execl("/bin/ls", "ls", "-la", NULL); 并通过 waitpid(pid, &status, 0 ); 函数接收子状态.但我需要将我的输出放在不同的时区,例如 TZ=UTC。 所以喜欢使用 'ls -la' 作为 'TZ=UTC ls -la'。那么是否可以使用 execl() 函数传递时区参数。或者有什么方法可以在特定时区获得输出。 找c代码。
【问题讨论】:
"正在寻找 c 代码。"很好,因为标签是 C,但您没有发布您尝试过的内容,而是描述了它。更好、更清楚地发布您尝试过的可编译代码。它为您正在尝试的细节增加了价值。 使用execle
并提供一个将TZ
设置为UTC
的环境。
【参考方案1】:
对于这种简单的情况,最简单的解决方案是在调用execl
之前使用setenv
修改TZ
环境变量的值。 (想必你fork()
在调用execl
之前;setenv
应该只在子进程中在fork()
之后调用,这样就不会修改父环境。)
您可以创建一个完整的环境列表,然后将其传递给execle
。但这是很多工作却收效甚微。如果您正在调用 setuid 可执行文件,或者您想要添加大量环境变量,或者您的 C 库没有setenv
,您可能想要这样做。但在正常情况下,单个setenv
调用就可以了。
【讨论】:
以上是关于如何在 execl() 函数中更改时区(TZ=UTC)输出。的主要内容,如果未能解决你的问题,请参考以下文章