Столкнулся с проблемой, ответ на которую не могу найти уже несколько дней. У меня есть небольшая программа написанная на Си и я хочу выполнить ее используя питон. Использовал я subprocess.Popen, выводил данные через communicate, но, насколько я понял, данные для вывода буферизируются и процесс ждет окончания программы и только тогда выводит данные. Это было бы не проблемой, но в моей программе ожидается пользовательский ввод и юзер никак не сможет узнать что же от него хочет мигающий курсор.
В общем, как я могу выводить данные из процесса по мере их появления, а не по окончанию процесса?
Мой код Python:
import subprocess
options = input("$ ")
run_program = subprocess.Popen(options, stdout=subprocess.PIPE)
output = run_program.stdout.read()
print(output.decode('utf-8'))
И если интересно код Си:
#include <stdio.h>
int main() {
int a = 5;
int b = 5;
int sum = a + b;
int blank;
printf("Write some number: ");
scanf("%d", &blank);
printf("%d\n", blank);
}