Como implementar um stdin, stdout wrapper?

Eu tenho um programa interativo que executa stdin e stdout. Eu preciso criar wrapper que irá enviar X para ele é stdin, verifique se ele imprime Y e, em seguida, redireciona stdin e stdout do wrapper para stdin e stdout do programa como programa seria executado diretamente.

Como implementar isso? X e Y podem ser codificados. Bater? Python?

Editar: Eu não posso executar o programa duas vezes. Tem que ser um exemplo. Aqui está o pseudocódigo:

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() 

questionAnswers(4)

yourAnswerToTheQuestion