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

时间:2019-06-20 10:54:44

标签: c mmap

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

1 个答案:

答案 0 :(得分:1)

您的问题有点令人困惑。

让我看看我是否理解。请在需要的地方纠正我:

  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”之类),然后多个程序可以共享它。