Как запустить программу на C из Python с использованием Popen и каналов, чтобы, например, scanf () ожидал ввода в канал?
Я хочу создать подпроцесс C-программы изапустите его в интерактивном режиме, используя каналы:
proc = subprocess.Popen(['./echo'], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
proc.stdin.write('Bob')
C-программа:
puts("Enter your name:");
scanf("%s", &input);
printf(input)
Теперь проблема в том, что scanf()
не ждет моего ввода, а вместо этого немедленно возвращает,Это происходит как с использованием shell=True
, так и без него.
Как мне заставить каналы работать должным образом, например scanf()
ждать ввода пользователя?