我想使用一個線程通過使用tshark實用程序(使用system()命令)獲取數據包的字段,然後將輸出重定向到文件。同一個文件需要被另一個線程同時讀取,以便它可以根據文件中觀察到的字段進行運行時決策。通過兩個線程同時讀/寫文件(互斥鎖不幫助)
我現在的問題是即使第一個線程正在寫入文件,第二個線程無法讀取它(它從文件中讀取NULL)。我不確定它爲什麼這樣表現。我認爲這可能是由於同時訪問同一個文件。我想過使用互斥鎖,但會阻塞讀線程,因爲第一個線程只會在程序終止時結束。
有關如何去解決它的任何想法?
你爲什麼要這樣做,而不是簡單地使用libpcap或winpcap來捕獲你想要直接在你的程序中的數據包? – 2012-01-02 15:25:18
,因爲我只需要幾個字段,tshark能夠準確地給出那些字段... – user1126425 2012-01-02 15:30:35