c - 如何将文件映射到 /dev/zero



我想在/dev/zero 中映射一个 pcap 文件,并让其他程序读取/dev/zero。可以做到吗? 我读了 APUE 这本书,看到了/dev/zero 的内存映射,但我认为这不是我想做的。 有人可以帮助我吗?

你的问题有点令人困惑。

让我看看我是否理解。请在需要时纠正我:

  1. 您有一个 .pcap 文件,您可以在程序中打开并加载其内容 - 我们称该程序为"A"。

  2. 您希望使该 .pcap 文件的内容在与另一个程序共享的内存缓冲区中可用 - 我们称该程序为"B"。

  3. 根据 APUE 书中的示例,您的想法是在程序 A 中 mmap/dev/zero,将 .pcap 文件的内容复制到映射的内存段中,然后期望当程序 B 也映射/dev/zero 时,它会看到 .pcap 文件的内容。

这就是你要的吗?

如果是这样,那么我认为您将无法使用/dev/zero。这两个程序中的每一个,当它mmap的/dev/zero时,都会得到一个单独的零填充内存映射实例。在这种情况下,两个程序共享的唯一方法是让一个程序成为另一个程序的fork()。

但是,您可以创建一个命名的共享内存对象,而不是"/dev/zero"(称为"/tmp/mypcap"或其他什么),然后多个程序可以共享它。

最新更新