Подпроцесс программы Python C зависает на «для строки в iter»
Итак, я пытаюсь запустить программу на C из скрипта Python. В настоящее время я использую тестовую программу C:
#include <stdio.h>
int main() {
while (1) {
printf("2000\n");
sleep(1);
}
return 0;
}
Чтобы смоделировать программу, которую я буду использовать, которая постоянно считывает показания датчика. Тогда я пытаюсь прочитать вывод (в этом случае"2000"
) из программы на C с подпроцессом в python:
#!usr/bin/python
import subprocess
process = subprocess.Popen("./main", stdout=subprocess.PIPE)
while True:
for line in iter(process.stdout.readline, ''):
print line,
но это не работает. Используя операторы print, он запускает.Popen
линия затем ждет вfor line in iter(process.stdout.readline, ''):
До тех пор, пока я не нажму Ctrl-C.
Почему это? Это именно то, что большинство примеров, которые я видел, имеют в качестве кода, и все же он не читает файл.
Редактировать:
Есть ли способ заставить его работать только тогда, когда есть что почитать?