【发布时间】:2014-07-17 13:11:19
【问题描述】:
我有一个使用 pcap 文件的 c++ 程序(在 linux 上执行)。处理来自此 pcap 文件的每个数据包,并在文本文件中生成结果。我编写了一个脚本,它使用不同的输入参数运行该程序的两个实例。该程序的一个实例在一个 CPU 上运行,另一个实例在第二个 CPU 上运行。
问题是在我的程序中我硬编码了 pcap 文件名。结果,在两个 CPU 上都会打开 pcap 文件并从中读取数据包。
我希望两个程序都打开同一个 pcap 文件进行读取,这种情况只发生一次,即有一次打开 pcap 文件,并且它的每个数据包都发送到 CPU1 和 CPU2 上运行的进程。
请给我一些指导,我该如何完成这项任务。
【问题讨论】:
-
所以您想要第三个程序读取 PCAP 文件并以某种方式将数据包发送到其他两个程序?为什么?作为您刚刚从 PCAP 文件中读取的程序,不会有任何问题。
-
@JoachimPileborg 这不会对内存使用造成任何问题,因为两个进程都在打开同一个 pcap 文件。
-
我不知道 PCAP 库,但除非文件非常大并且完全加载到内存中,否则不会有问题。你不用担心,例如您的编辑器和编译器正在加载您的源文件?
-
@JoachimPileborg Pcap 是一个由wireshark 创建的包含网络数据包的文件。在我的例子中,它的大小是 2GB。对不起,我不明白你的问题。我刚刚使用 g++ 编译了我的 c++ 代码并在两个 CPU 上运行它的可执行文件。
-
关于这个问题,我的意思是多个程序同时访问一个文件并不罕见。由于文件很大,您必须检查它是如何加载的。如果它一次全部加载到内存中,那么你需要有超过 4GB 的虚拟内存,如果文件是分段加载的(这对于这种类型的文件来说是很自然的事情),那么两个程序读取没有问题它。
标签: c++ linux process parallel-processing