¿Cómo implementar un stdin, stdout wrapper?

Tengo un programa interactivo que ejecuta stdin y stdout. Necesito crear un contenedor que envíe X a su stdin, verifique que imprima Y y luego redireccione el stdin y stdout del wrapper al stdin y stdout del programa al igual que el programa se ejecutaría directamente.

¿Cómo implementar esto? X e Y pueden ser codificados. ¿Golpetazo? ¿Pitón?

Editar: No puedo ejecutar el programa dos veces. Tiene que ser una instancia. Aquí está el 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() 

Respuestas a la pregunta(4)

Su respuesta a la pregunta