2016-06-10 18 views
0

Ich habe ein externes Programm, das ich anrufen möchte, zum Beispiel ping -t 8.8.8.8.Rückruf jedes Mal, wenn Unterprozess druckt

Und ich bin ein wenig verwirrt, was zu tun ist, um einen Rückruf jedes Mal zu haben, ping druckt einen Ausgang.

Ich bin auf der Suche nach einer Möglichkeit, ein Stück Code mit der neuesten Ausgabezeile jedes Mal aufrufen, wenn es eine Ausgabe gibt.

Danke für die Hilfe!

Antwort

0

Dieser Code funktioniert, der Trick verwendet process.stdout.readline(), da es blockiert, bis eine Zeile bereit ist.

Beispielcode:

cmd = "ping -t www.google.com" 
ping = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE) 

try: 
    while True: 
     line = str(ping.stdout.readline(), "ascii") 
     print(line) # this can be anything 
except KeyboardInterrupt: 
    ping.terminate() # don't wanna leave a process hanging in the background 
Verwandte Themen