1

こんにちは私はPythonプログラミング言語に本当に慣れていませんが、1つのスクリプトを書く際に問題が発生しました。Pythonスクリプトの変数でtcpdumpコマンドを実行したときに取得するstdoutからの出力を保存したいのですが、tcpdumpによってフィルタリングされる転送されたすべてのパケットから長さを収集したいので、tpcdumpコマンドを継続的に実行したいです。 (私が書いたフィルターを使用)。私は試した :

    fin, fout = os.popen4(comand)
    result = fout.read()
    return result

しかし、それはただハングします。

4

1 に答える 1

3

os.popen4子プロセスが終了するまで戻らないため、ハングしていると思います。subprocess.Popen代わりに使用する必要があります。

import subprocess
import shlex  #just so you don't need break "comand" into a list yourself ;)

p=subprocess.Popen(shlex.split(comand),stdout=subprocess.PIPE)
first_line_of_output=p.stdout.readline()
second_line_of_output=p.stdout.readline()
...
于 2012-06-01T18:00:41.490 に答える