Подпроцесс Python взаимодействует с двоичным - PullRequest
0 голосов
/ 17 марта 2019

Я хочу взаимодействовать с двоичным файлом, отправив ему некоторый ввод и затем распечатать сгенерированный вывод.

Сам двоичный файл работает следующим образом:

binary.exe
Please enter the input
abcd
generated_output

Двоичный файл читает входные данные, используяПрерывание INT 21, поэтому нет необходимости отправлять символ новой строки в двоичный файл в конце ввода.Как только длина ввода соответствует желаемой длине, двоичный файл автоматически генерирует вывод.Длина ввода должна составлять 10 символов.

Примечание: Бинарное чтение по одному символу ввода из стандартного ввода с использованием прерывания INT 21.Таким образом, он обрабатывает каждый символ ввода как и когда он набирается в stdin.Как только 10-й символ набирается в stdin, вывод генерируется.

Я хотел бы зарегистрировать вывод.

До сих пор я мог использовать только подпроцесс check_output для получения выводадвоичный файл с надписью «Пожалуйста, введите ввод», как показано ниже:

#! /usr/bin/python

from subprocess import check_output
import sys

p = sys.argv[1]

result = check_output(p, shell=True)

print result

Приведенный выше код не вернется, поскольку двоичный файл ожидает ввода данных.

ЕслиЯ нажимаю «Ctrl + C» в командной строке, затем первая строка двоичного вывода печатается как:

«Пожалуйста, введите ввод».

Я хотел бы передать вводв двоичный файл после этого и запишите сгенерированный вывод в файл.

1 Ответ

0 голосов
/ 17 марта 2019

Бинарный файл находится в ожидании чтения из STDIN, поэтому вам нужно предоставить ему некоторый ввод.Для этого вам нужно использовать Popen.Например:

from subprocess import Popen, PIPE

proc = Popen('binary.exe', stdin=PIPE, stdout=PIPE)
print(proc.communicate('your input'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...