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

标签 c linux fork system execl

我正在运行一个二进制文件,例如。我的 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/

相关文章:

c++ - 运行时检查失败 #2 - 变量 'indices' 周围的堆栈已损坏

c中的复数输入

linux - 如何获取Linux中各个程序的使用量?

在 ubuntu 20.04.3 上从 gdb 运行 helloworld.c 的 CRC 不匹配警告

linux - 如何在 Linux 内核代码中生成内核 oops 或 panic crash?

c - 我应该用 exit() 终止一个 fork 的子进程吗?

PHP fork 和多个子信号

c - 将限制合格的指针传递给函数?

c - 生成随机位 - C rand() 中缺乏随机性

c - fork() 导致为每个进程打印列标题