Задать вопрос

Как заставить сразу отображать выходные данные Popen?

Столкнулся с проблемой, ответ на которую не могу найти уже несколько дней. У меня есть небольшая программа написанная на Си и я хочу выполнить ее используя питон. Использовал я 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);
}
  • Вопрос задан
  • 92 просмотра
Подписаться 2 Средний 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы