私はtcpdump
このようなサブプロセスで実行しています:
pcap_process = subprocess.Popen(['tcpdump', '-s 0', '-w -', 'tcp'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-w -
引数は重要です。結果の .pcap ファイルを に出力するように指示しtcpdump
ますstdout
。
次に、 を使用して Web サイトにアクセスしますurllib.open()
。これが完了したら、印刷されたものをすべて殺しtcpdump
、文字列に入れたいと思います。私は次のことを試しました:
pcap_process.terminate()
result = pcap_process.stdout.read() # or readline(), etc.
しかし(私が何か間違ったことをしていない限り)、それはうまくいきません。プロセスを強制終了したため、読み取るものは何も残っていません。read()
終了する前にorを使用するcommunicate()
と、スクリプトはそこに座って読み続けtcpdump
、終了するのを待ちます (そうはなりません)。
これを行う方法はありますか(できればループなしで)?