Почему подпроцесс tcprewrite вызывает ошибку EOF? - PullRequest
0 голосов
/ 11 июля 2019

Я пытаюсь использовать execute tcprewrite в цикле Python с вводом, но я получаю ошибки EOF.

Я знаю, что ввод может вызвать ошибку EOF, когда выполняется подпроцесс для tcprewrite.

Я пробовал обрабатывать другие команды, такие как touch и date, они, похоже, не вызывают ошибок EOF.

Я пробовал subprocess.call, os.system и Popen, однако они выдают ту же ошибку EOF, когдаВыполнение tcprewrite в цикле while с вводом.

Я могу просто отлично выполнить команду 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

1 Ответ

0 голосов
/ 11 июля 2019

Нашли исправление

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
...