我想在/ dev / zero中映射一个pcap文件,并让其他程序读取/ dev / zero。有可能吗? 我读了《 APUE》一书,看到了/ dev / zero的Memory映射,但是我认为这不是我想要做的。 有没有人可以帮助我?
答案 0 :(得分:1)
您的问题有点令人困惑。
让我看看我是否理解。请在需要的地方纠正我:
您有一个.pcap文件,您可以打开该文件并将其内容加载到程序中-让我们将程序称为“ A”。
您想让该.pcap文件的内容在与另一个程序共享的内存缓冲区中可用-我们将其称为“ B”程序。
基于APUE书中的示例,您的想法是在程序A中进行mmap / dev / zero映射,将.pcap文件的内容复制到映射的内存段中,然后期望当程序B也在映射/ dev / zero,它将看到.pcap文件的内容。
这是你要做什么?
如果是这样,那么我认为您将无法使用/ dev / zero。这两个程序在mmap的/ dev / zero中时,将分别获得内存映射的零填充实例。在这种情况下,两个程序共享的唯一方法是将一个程序作为另一个程序的fork()。
但是,您可以创建一个除“ / dev / zero”之外的命名共享内存对象(称为“ / tmp / mypcap”之类),然后多个程序可以共享它。