首页 > 解决方案 > 缺少新的环境变量

问题描述

我在我的程序中设置了一个新的环境变量,但我无法从 shell 中找到它:

int main()
{
    if(!setenv("TEST","22222",0)) perror("");
    sleep(1000);
    return 0;
}

我试试

$ a.out &
[3] 605
$ Success

$ cat /proc/605/environ|grep 2222
$ ps e 605|grep 2222
$

有任何想法吗?非常感谢。

标签: clinux

解决方案


man 5 proc(注意粗体段落)中所述:

/proc/[pid]/environ

execve该文件包含通过(2)启动当前执行程序时设置的初始环境 。这些条目由空字节 ( '\0') 分隔,最后可能有一个空字节。因此,要打印出流程 1 的环境,您可以:

$ cat /proc/1/environ | tr '\000' '\n'

如果在execve(2) 之后,进程修改了它的环境(例如,通过调用诸如 putenv(3) 之类的函数或environ直接修改 (7) 变量),则此文件将不会反映这些更改。


推荐阅读