为什么子处理 tcprewrite 会导致 EOF 错误?

Why does sub-processing tcprewrite cause EOF error?

提问人:Ken Tong 提问时间:7/11/2019 更新时间:7/11/2019 访问量:189

问:

我正在尝试在带有输入的 python while 循环中使用执行 tcprewrite,但我不断收到 EOF 错误。

我知道在执行 tcprewrite 的子处理时,输入可能会导致 EOF 错误。

我尝试过对其他命令进行子处理,例如触摸和日期,它们似乎不会导致EOF错误。

我尝试过 subprocess.call、os.system 和 Popen,但是当在带有输入的 while 循环中执行 tcprewrite 时,它们会给出相同的 EOF 错误。

我可以自己在终端中运行 tcprewrite 命令就好了。

import subprocess
import time


while True:
    first = input("Option: ")
    print(first)

    command = "tcprewrite --infile=test1.pcap --outfile=result.pcap --dlt=enet --fixcsum"
    p = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True)

    (output, err) = p.communicate()

    p_status = p.wait()
    print("Command output : ", output)

    print("Command exit status/return code : ", p_status)

    time.sleep(5)

输出:

Option: 1

1

Command output :  b''

Command exit status/return code :  0

Option: Traceback (most recent call last):
  File "test3.py", line 8, in <module>
    first = input("Option: ")
EOFError
python-3.x 循环子 进程 eof tcpreplay

评论


答:

0赞 Ken Tong 7/11/2019 #1

找到修复方法

p = subprocess.call(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

#  You can combine command inside the above statement

print('True' if p == 0 else 'Error')

#  0 == True
#  1 == Command Not Found
# >1 == Error