2014-07-17 93 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

相關問題