Вы должны открыть подпроцесс следующим образом:
import subprocess
cmd = subprocess.Popen(['./myprogram'], stdin=subprocess.PIPE)
Это означает, что cmd
будет иметь .stdin
, в который вы можете писать; print
по умолчанию отправляет вывод на stdout вашего Python скрипта, который не имеет связи с stdin подпроцесса. Так что сделайте это:
cmd.stdin.write('1\n') # tell myprogram to select 1
, а затем, вполне вероятно, вам следует:
cmd.stdin.flush() # don't let your input stay in in-memory-buffers
или
cmd.stdin.close() # if you're done with writing to the subprocess.
PS Если ваш Python скрипт длинный - запущенный процесс в системе * nix, и вы замечаете, что ваш подпроцесс завершился, но все еще отображается как процесс Z (zomb ie), проверьте этот ответ.