0

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

4

1 回答 1

1

对于这种简单的情况,最简单的解决方案是在调用之前使用setenv修改环境变量的值 。(大概你在调用;之前应该在唯一的子进程中调用,这样它就不会修改父的环境。)TZexeclfork()execlsetenvfork()

您可以创建一个完整的环境列表,然后将其传递给execle. 但这是很多工作却收效甚微。如果您正在调用 setuid 可执行文件,或者您想要添加大量环境变量,或者您的 C 库没有setenv. 但在正常情况下,单次setenv调用就可以了。

于 2018-05-30T03:10:35.327 回答