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

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

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

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

【问题讨论】:

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

标签: python linux environment-variables inter-process-communicat


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-24
    • 2013-07-23
    • 1970-01-01
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多