-1

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

在生产者应用程序中,我执行了此命令

putenv("MSG_KEY=15");

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

char *z=getenv("MSG_KEY");

但它不返回任何值(我得到 nil 值)。如果我在生产者中编写相同的命令,如果我putenv()之前使用几行,它就可以工作。我认为问题在于它仅在本地设置变量,因此我无法从另一个程序访问它,但我不知道如何解决它。不知道这是否重要,但我使用的是 Linux 系统。

4

1 回答 1

4

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

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

于 2016-01-02T19:37:23.223 回答