c - 读取全局环境变量

标签 c linux unix gnu

我有一个由另一个程序的 execve() 创建的进程,并将一组特定的环境传递给它。但是,我需要读取一个全局环境变量,该变量可能会或可能不会由用户根据某些方面进行设置。例如,调用 execve() 时设置 $PATH,但如果用户输入 $LOWMEM=1 ( export LOWMEM=1 ) 在程序执行之前,程序不会生成 malloc()调用大于 1KB .

当我执行 getenv("LOWMEM") 时从它返回的程序中调用 NULL我在哪里添加了 LOWMEM=1/etc/enviromentecho $LOWMWM将值显示为 1。但我在 /proc/<PID>/environ 中没有看到 LOWMEM 条目.而我在将条目添加到 /etc/environment 后重新启动了系统.

如果不从父进程显式传递,是否无法从在特定环境下运行的进程读取全局环境?

最佳答案

您似乎很可能在使用 execve 时清除了 LOWMEM 的条目。相反,最好为您想要的新变量调用 setenv,在父级或子级中,然后调用 execv

关于c - 读取全局环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49945595/

相关文章:

c - 我的程序收到错误 'stray '\16 0' in program '

linux - Anjuta/Glade 教程还是更好的 IDE?

c - 如果一个不可重入的 linux 函数(比如 select)没有完成执行会发生什么?

C 文件处理/结构问题

字符设备 : choose the device to read/write

java - 在 Linux NFS 上检查文件是否存在的可靠方法?

Bash 命令查看目录中是否有任何文件 - 测试目录是否为空

c - EXC_BAD_ACCESS 尝试在 C 中执行 strcat 函数时

shell - haskell 和 Unix shell 脚本

c - 在 C 中分配指针的不同方法,使用 & 或 *?