C Producer/Consumer 应用程序使用 getenv() 获取环境变量不起作用

C Producer/Consumer application getting environment variables with getenv() not working

我正在编写一个应用程序,生产者负责制作和发送消息,而消费者负责接收消息。我必须在生产者应用程序中设置环境变量并在消费者应用程序中读取它。

在生产者应用程序中我执行了这个命令

putenv("MSG_KEY=15");

在消费者应用程序中,我尝试像这样获取变量

char *z=getenv("MSG_KEY");

但它 return 没有任何价值(我得到的是零值)。如果我在生产者中编写相同的命令,如果我之前使用 putenv() 几行,它就会起作用。我认为问题是它只在本地设置变量所以我不能从另一个程序访问它但我不知道如何解决它。 不知道这是否重要,但我正在使用 Linux 系统。

环境变量是进程私有的。您不能在一个进程中设置它们并期望在另一个进程中读取它们。

您唯一可以通过环境变量与另一个进程进行任何通信的情况是从父进程到子进程,并且 在父进程生成子进程时。父进程可以在生成子进程时复制、修改、添加或删除环境变量。从那时起,他们就完全分开了。一个进程对变量所做的更改对另一个进程不可见。