1

您好,我对 Python 编程语言真的很陌生,我在编写一个脚本时遇到了问题。我想保存当我在 Python 脚本的变量中运行 tcpdump 命令时获得的 stdout 输出,但我希望 tpcdump 命令连续运行,因为我想从所有传输的数据包中收集长度,这些数据包被 tcpdump 过滤(使用我写的过滤器)。我试过 :

    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 回答