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

Как заставить сразу отображать выходные данные 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);
}
  • Вопрос задан
  • 106 просмотров
Подписаться 2 Средний 5 комментариев
Помогут разобраться в теме Все курсы
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
  • Skillfactory
    Профессия Python-разработчик
    9 месяцев
    Далее
  • SF Education
    Бэкенд-разработчик на Python
    3 месяца
    Далее
Пригласить эксперта
Ваш ответ на вопрос

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

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