[英]Python subprocess interact with a binary
我希望通过发送一些输入来与二进制文件进行交互,然后打印生成的输出。
二进制本身的工作原理如下:
binary.exe
Please enter the input
abcd
generated_output
二进制文件使用INT 21中断读取输入,因此无需在输入结束时向二进制文件发送换行符。 只要输入的长度与所需的长度匹配,二进制文件就会自动生成输出。 输入的长度必须为10个字符。
注意: Binary使用INT 21中断从stdin一次读取输入的一个字符。 因此,它在输入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”,则二进制输出的第一行显示为:
“请输入输入”。
我想在此之后将输入传递给二进制文件并将生成的输出记录到文件中。
该二进制文件正在挂起,等待从STDIN中读取,因此您需要为其提供一些输入。 要做到这一点,你需要使用Popen
。 例如:
from subprocess import Popen, PIPE
proc = Popen('binary.exe', stdin=PIPE, stdout=PIPE)
print(proc.communicate('your input'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.