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

How to map a file to /dev/zero

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

你的问题有点乱。

让我看看我是否理解。有需要请指正:

  1. 您有一个 .pcap 文件,您可以打开该文件并将其内容加载到程序中——我们将该程序命名为 "A"。

  2. 您想使该 .pcap 文件的内容在您与另一个程序共享的内存缓冲区中可用——让我们调用该程序 "B".

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

这是你想要的吗?

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

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