我的应用程序需要在不同进程之间存储和交换一些(一个)值。在应用程序启动后面还需要这个值(但不是在系统重启后)。 我可以在文件中写入和读取该值并同步访问。该文件可以放在ramfs中。解决方案可行,但我觉得我使用了错误的方法。
是否有更好的轻量级解决方案?我是否会错过一种直截了当的方法? 我在考虑命名管道(mkfifo),但是需要总是和活跃的作家和读者?
答案 0 :(得分:1)
您在询问inter-process communication。流程之间有许多通信方法:
哪种方法最适合您,取决于进程间交换的消息的复杂性,整个系统的复杂性,可移植性的需求等。
共享内存是一种非常低级的方法,可以感觉到最简单的解决方案“因为它只是指针内存中的字节数”。然而,它本质上是低级别的性质使得它使用起来也很繁琐。这些工具没有普遍认可的C ++接口,因此您可以使用低级C风格的API来访问和配置进程之间的共享内存。平台之间存在差异(POSIX是单向的; Windows是另一种方式)。
Boost.Interprocess为您提供了一种访问共享内存机制的便携方式,旨在制作using them simpler。