我想通过发送一些输入与二进制文件进行交互,然后打印生成的输出。
二进制文件本身是这样的:
binary.exe
Please enter the input
abcd
generated_output
二进制文件使用INT 21中断读取输入,因此无需在输入末尾向二进制文件发送换行符。只要输入的长度与所需的长度匹配,二进制文件就会自动生成输出。输入的长度必须为10个字符。
注意:二进制使用INT 21中断从stdin一次读取一个输入字符。因此,它将在输入标准输入时处理输入的每个字符。在stdin中键入第10个字符后,立即生成输出。
我想记录输出。
到目前为止,我只能使用子过程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”,则二进制输出的第一行将显示为:
“请输入输入内容。”
此后,我想将输入传递给二进制文件并将生成的输出记录到文件中。
答案 0 :(得分:0)
二进制文件正在挂起,等待从STDIN中读取数据,因此您需要为其提供一些输入。为此,您需要使用from subprocess import Popen, PIPE
proc = Popen('binary.exe', stdin=PIPE, stdout=PIPE)
print(proc.communicate('your input'))
。例如:
(x += 1) %= 10