你好,我是Python编程语言的新手,我在编写一个脚本时遇到了问题。我想保存我在 Python 脚本中的变量中运行 tcpdump 命令时获得的 stdout 输出,但我希望 tpcdump 命令连续运行,因为我想从所有传输的数据包中收集长度被 tcpdump(使用我编写的过滤器)过滤。我试过了:
fin, fout = os.popen4(comand)
result = fout.read()
return result
但它只是挂起。
我猜它挂起是因为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()
...