使用环境变量进行简单的进程间通信

Posted

技术标签:

【中文标题】使用环境变量进行简单的进程间通信【英文标题】:Using environment variables for simple interprocess communication 【发布时间】:2014-04-22 14:38:17 【问题描述】:

如果我要使用 Linux 环境变量作为在不同进程之间共享信息的简单方法(用 Python 编写),我需要注意哪些含义/注意事项?例如,在单处理器/核心系统上读写是原子的吗?

我正在 Raspberry Pi 上设计一个嵌入式系统,我将在其中有多个独立的进程来执行监视和控制。这些进程有时需要访问将由另一个进程更新的共享“属性”。例如,一个进程可能会监控 RFID 阅读器并使用最后刷卡的序列号更新环境变量。然后其他进程将能够访问该序列号并使用它。

我考虑这个想法的唯一原因是简单。我只对在进程之间共享简单的字符串和数字感兴趣,我觉得这比使用套接字之类的东西更简单。

【问题讨论】:

环境变量绝对不是这项工作的工具。它们是在进程启动之前设置的,只能由该进程更改,并且只能由该进程启动的子进程观察到更改。没有真正的交流能力,除了一个方向…… 即使可以,也不要这样做。没有“正常”的方法可以做到这一点,你可以做的是可怕的黑客攻击,只会导致心痛。而是问一个问题,详细说明流程需要如何交换信息,人们可以帮助您将选择范围缩小到适当的 IPC。 谢谢,经过一些实验,我得出了同样的结论——你不能像我预期的那样真正使用它们。 【参考方案1】:

我也在研究基于 RPI 的嵌入式系统,在某些情况下有类似的要求。 根据我的经验,最好的方法是使用 Linux 命名管道 (FIFO)。

这里有一些资源,但还有更多在线课程:

http://www.linuxjournal.com/article/2156http://www.roman10.net/named-pipe-in-linux-with-a-python-example/http://tuxthink.blogspot.com/2012/02/inter-process-communication-using-named.html

【讨论】:

以上是关于使用环境变量进行简单的进程间通信的主要内容,如果未能解决你的问题,请参考以下文章

第七课 进程通信

7.7-UC-第七课:进程通信

进程间通信

进程通信——管道消息队列共享内存信号量

进程间通信方式总结

Linux进程间通信--共享内存