Podproces programu Python C zawiesza się w „for line in iter”
Ok, więc próbuję uruchomić program C ze skryptu Pythona. Obecnie używam programu testowego C:
#include <stdio.h>
int main() {
while (1) {
printf("2000\n");
sleep(1);
}
return 0;
}
Aby symulować program, którego będę używał, który nieustannie pobiera odczyty z czujnika. Następnie próbuję odczytać dane wyjściowe (w tym przypadku"2000"
) z programu C z podprocesem w Pythonie:
#!usr/bin/python
import subprocess
process = subprocess.Popen("./main", stdout=subprocess.PIPE)
while True:
for line in iter(process.stdout.readline, ''):
print line,
ale to nie działa. Korzystając z instrukcji drukowania, uruchamia polecenie.Popen
linia czeka nafor line in iter(process.stdout.readline, ''):
, dopóki nie wcisnę Ctrl-C.
Dlaczego to? To jest dokładnie to, co większość przykładów, które widziałem, ma jako swój kod, a jednak nie odczytuje pliku.
Edytować:
Czy istnieje sposób na uruchomienie go tylko wtedy, gdy jest coś do przeczytania?