在不同流程之间交换和存储值

时间:2015-11-03 15:58:48

标签: c++ c linux

我的应用程序需要在不同进程之间存储和交换一些(一个)值。在应用程序启动后面还需要这个值(但不是在系统重启后)。 我可以在文件中写入和读取该值并同步访问。该文件可以放在ramfs中。解决方案可行,但我觉得我使用了错误的方法。

是否有更好的轻量级解决方案?我是否会错过一种直截了当的方法? 我在考虑命名管道(mkfifo),但是需要总是和活跃的作家和读者?

1 个答案:

答案 0 :(得分:1)

您在询问inter-process communication。流程之间有许多通信方法:

  • 低级别共享内存
  • 低级命名管道
  • 低级插座
  • 远程过程调用机制(DCOMCorbaONC RPC等。)
  • REST api
  • 分布式系统框架

哪种方法最适合您,取决于进程间交换的消息的复杂性,整个系统的复杂性,可移植性的需求等。

共享内存是一种非常低级的方法,可以感觉到最简单的解决方案“因为它只是指针内存中的字节数”。然而,它本质上是低级别的性质使得它使用起来也很繁琐。这些工具没有普遍认可的C ++接口,因此您可以使用低级C风格的API来访问和配置进程之间的共享内存。平台之间存在差异(POSIX是单向的; Windows是另一种方式)。

Boost.Interprocess为您提供了一种访问共享内存机制的便携方式,旨在制作using them simpler