【问题标题】:Exchanging data between executables在可执行文件之间交换数据
【发布时间】:2014-03-28 16:51:46
【问题描述】:

我有两个 C++ 程序 P1 和 P2(每个都生成一个可执行文件)。 P1 将字符串保存在文件中,P2 加载字符串并使用它。这个过程只是为了在这两个独立的程序之间交换数据。

是否可以将字符串保存在 RAM 中的某个位置,这样硬盘就不会被占用?

【问题讨论】:

  • 这应该适用于哪个操作系统?
  • 想到套接字和共享内存...
  • 这就是管道 (|) 的用途...
  • ...和内存映射文件

标签: c++ memory ram


【解决方案1】:

是否可以将字符串保存在 RAM 中的某个位置,以便 硬盘不会被占用?

是的,您可以使用几种进程间通信方法之一。选择包括

  • 套接字
  • 内存映射文件
  • 共享内存
  • 管道

Here 是一个使用映射到 RAM 的文件并调用 mmap 的示例。

映射到 RAM 的文件,可以通过更改内存地址进行修改 直接而不是输出到流,共享相同的好处 标准文件。

读取和写入内存映射文件可避免使用 read() 或 write() 系统调用时发生的无关副本,其中必须将数据复制到用户空间缓冲区或从用户空间缓冲区复制数据。

tutorial

【讨论】:

  • 我在示例中看到了一条路径:"/tmp/mmapped.bin"。如果它在硬盘中创建一个文件,这就是 P1 和 P2 已经在做的事情了吗?
  • 文件被映射到内存,因此您可以像访问 RAM 中的数据一样访问它
猜你喜欢
  • 1970-01-01
  • 2014-11-09
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多