tsharkユーティリティ(system()コマンドを使用)を使用して1つのスレッドを使用してパケットのフィールドを取得すると、出力がファイルにリダイレクトされます。この同じファイルは別のスレッドによって同時に読み取られる必要があるため、ファイル内で観測されるフィールドに基づいて実行時の決定を行うことができます。2つのスレッドによるファイルの同時読み込み/書き込み
最初のスレッドがファイルに書き込み中であっても、2番目のスレッドはそれを読み取れません(ファイルからNULLを読み込みます)。なぜ私はこのように行動しているのか分かりません。私はそれが同じファイルへの同時アクセスのためかもしれないと思った。私はmutexロックを使うことを考えましたが、それは読み込みスレッドをブロックするでしょう。なぜなら最初のスレッドはプログラムが終了したときに終了するだけなので、
どうすればいいですか?
libpcapまたはwinpcapを使用して直接プログラムに入れたいパケットをキャプチャするのではなく、なぜこのようにしていますか? –
私はいくつかのフィールドしか必要とせず、tsharkがそれらのフィールドを正確に与えることができるからです... – user1126425