我有一个运行标准输入和标准输出的交互式程序。我需要创建将 X 发送到它的标准输入的包装器,检查它是否打印 Y,然后将包装器的标准输入和标准输出重定向到程序的标准输入和标准输出,就像程序将直接执行一样。
如何实施?X 和 Y 可以硬编码。重击?Python?
编辑:我无法运行该程序两次。它必须是一个实例。这是伪代码:
def wrap(cmd, in, expected_out):
p = exec(cmd)
p.writeToStdin(in)
out = p.readBytes (expected_out.size())
if (out != expected_out) return fail;
# if the above 4 lines would be absent or (in == "" and out == "")
# then this wrapper would be exactly like direct execution of cmd
connectpipe (p.stdout, stdout)
connectpipe (stdin, p.stdin)
p.continueExecution()