如何在execl()函数中更改时区(TZ = UTC)输出。

时间:2018-05-29 18:03:57

标签: c linux fork system execl

我正在使用运行一个二进制文件,例如。 ' ls -la'在我的c代码中使用 execl()函数并读取子进程的返回状态。 execl(" / bin / ls"," ls"," -la",NULL); 并通过 waitpid(pid,& status,0); 功能。但是我需要把我的时间放在不同的时区,比如 TZ = UTC 。 所以喜欢使用' ls -la' as' TZ = UTC ls -la'。因此可以通过execl()函数传递时区参数。或者有没有办法在特定时区获得输出。 寻找c代码。

1 个答案:

答案 0 :(得分:1)

对于这个简单的情况,最简单的解决方案是在调用TZ之前使用setenv修改execl环境变量的值。 (可能是在fork()致电之前execl; setenv应仅在子流程中fork()之后调用,因此它不会修改父母的环境。)

您可以创建整个环境列表,然后将其传递给execle。但是,这很多工作几乎没什么好处。如果您正在调用setuid可执行文件,或者您想要添加许多环境变量,或者您的C库没有setenv,则可能需要这样做。但在正常情况下,单setenv次呼叫就可以了。