Jak zaimplementować stdin, stdout wrapper?

Mam interaktywny program, który uruchamia stdin i stdout. Muszę utworzyć wrapper, który wyśle ​​X do jego standardowego wejścia, sprawdź, czy drukuje Y, a następnie przekierowuje stdin i stdout opakowania do stdin i stdout programu, tak jak program zostanie wykonany bezpośrednio.

Jak to wdrożyć? X i Y mogą być zakodowane na stałe. Grzmotnąć? Pyton?

Edytować: Nie mogę uruchomić programu dwukrotnie. To musi być jeden przypadek. Oto pseudokod:

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