我正在运行一个二进制文件,例如。我的 C 代码中的 'ls -la' 具有 execl() 函数并读取子进程的返回状态。 execl("/bin/ls", "ls", "-la", NULL); 并通过 waitpid(pid, &status, 0 ); 函数接收子状态.但我需要将我的输出放在不同的时区,如 TZ=UTC。 所以喜欢使用 'ls -la' 作为 'TZ=UTC ls -la'。那么是否可以使用 execl() 函数传递时区参数。或者有什么方法可以在特定时区获取输出。 寻找 C 代码。
最佳答案
对于这种简单的情况,最简单的解决方案是使用 setenv
在调用 execl
之前修改 TZ
环境变量的值。 (假设您在调用 execl
之前 fork()
;setenv
应该在 fork()
之后调用仅在子进程中,因此它不会修改父进程的环境。)
您可以创建一个完整的环境列表,然后将其传递给 execle
。但这是收效甚微的大量工作。如果您正在调用 setuid 可执行文件,或者如果您想要添加大量环境变量,或者如果您的 C 库没有 setenv
,您可能想要这样做。但在正常情况下,单个 setenv
调用就可以了。
关于c - 如何在 execl() 函数中更改时区 (TZ=UTC) 输出。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50590356/