我有一个由另一个程序的 execve() 创建的进程,并将一组特定的环境传递给它。但是,我需要读取一个全局环境变量,该变量可能会或可能不会由用户根据某些方面进行设置。例如,调用 execve() 时设置 $PATH,但如果用户输入 $LOWMEM=1
( export LOWMEM=1
)
在程序执行之前,程序不会生成 malloc()
调用大于 1KB
.
当我执行 getenv("LOWMEM")
时从它返回的程序中调用 NULL
我在哪里添加了 LOWMEM=1
在 /etc/enviroment
和 echo $LOWMWM
将值显示为 1。但我在 /proc/<PID>/environ
中没有看到 LOWMEM 条目.而我在将条目添加到 /etc/environment
后重新启动了系统.
如果不从父进程显式传递,是否无法从在特定环境下运行的进程读取全局环境?
最佳答案
您似乎很可能在使用 execve
时清除了 LOWMEM 的条目。相反,最好为您想要的新变量调用 setenv
,在父级或子级中,然后调用 execv
。
关于c - 读取全局环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49945595/