我有一个由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
后重新启动了系统。
是否无法从特定环境下运行的进程读取全局环境而不从父进程显式传递它?
答案 0 :(得分:0)
您最有可能在使用execve
时清除LOWMEM的条目。相反,最好在父级或子级中为所需的新变量调用setenv
,然后调用execv
。