p = subprocess.Popen('gdb.exe',
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
stdin=subprocess.PIPE)
while not p.poll(): # щупает процесс на предмет кода завершения, если кода нет - возвращает None
print(p.stdout.readline()) # будет ждать целую строку из stdout
p.stdin.write(b'testbytes') # напишет в stdin