2014-07-17 65 views
0

我有一个使用pcap文件的C++程序(在linux上执行)。处理来自该pcap文件的每个数据包并在文本文件中生成结果。我编写了一个脚本,用不同的输入参数运行这个程序的两个实例。该程序的一个实例在一个CPU上运行,另一个实例在第二个CPU上运行。两个进程共享相同的pcap文件

问题是,在我的程序中,我硬编码了pcap文件名。因此,在两个CPU上打开pcap文件并从中读取数据包。

我希望这两个程序都能打开相同的pcap文件进行读取,这种情况只发生一次,一个pcap文件被打开,并且每个数据包都被发送到CPU1和CPU2上运行的进程。

请给我一些方向,我该如何才能完成这项任务。

+0

所以你想要第三个程序读取PCAP文件,并以某种方式将数据包发送到其他两个程序?为什么?由于您刚刚从PCAP文件读取的程序不会有任何问题。 –

+0

@JoachimPileborg这会不会导致内存使用方面的任何问题,因为两个进程打开相同的pcap文件。 – Xara

+0

我不知道PCAP库,但除非文件非常大并且完全加载到内存中,否则不会有问题。你不用担心如你的源文件是由你的编辑器和你的编译器加载的? –

回答

1

这听起来像你希望你的流程,做这样的事情:

  1. 打开您的PCAP文件
  2. 看了一些数据包从它
  3. 通行证是分组发送到你的进程的两个线程,每个配置不同

你可以让你的脚本读取pcap文件,并将二进制数据传递到你的C++程序然后处理它。或者你可以使用套接字,共享内存管道而不是标准输入。

我假设你有权访问你所说的程序的代码。

如果不是,那就更加复杂了。

+0

你可以请解释两个最简单的方法:套接字和共享内存.. – Xara

+0

为简单起见,我只是使用标准输入或管道。但如果我没有这个选项,我可能会将它发送到套接字上 – Vinbot

相关问题