【发布时间】:2021-12-09 10:32:49
【问题描述】:
基本上问题就在标题中。我正在使用setenv() 函数在我的cpp 程序中设置环境变量,其中我还使用fork() exec() 链,它创建了一个子进程。问题是创建的变量也可以从此子进程访问。这使得 setenv() 等同于 shell 中的 export ABC=EFG 行为。我想要的是分离这个功能。我想单独设置变量ABC=EFG 并使其可用于子进程export ABC。如何做到这一点?
编辑:我决定在此处将我的评论添加到@SergeyA 的回答中。例如,在这种情况下,bash 如何处理环境变量?如果我编写 ABC=EFG 并调用仅由一行 echo $ABC 组成的脚本,它将不会打印任何内容,除非我之前调用了 export ABC。我只是在写一个 shell 并试图模仿这种行为。
【问题讨论】:
-
@Frank 已添加,感谢您的评论。
-
普通的shell变量和环境变量是有区别的。 Shell 仅通过采用环境参数的
exec*()函数之一将后者提供给它们执行的进程。
标签: c++ linux system-calls