Próba przekierowania wyjścia podprocesu do pliku.subprocess.Popen() Przekierowanie IO
server.py:
while 1:
print "Count " + str(count)
sys.stdout.flush()
count = count + 1
time.sleep(1)
Laucher:
cmd = './server.py >temp.txt'
args = shlex.split(cmd)
server = subprocess.Popen(args)
Wyjście wyświetlany na ekranie, temp.txt
pozostaje pusta. Co robię źle?
Jako tło próbuję uchwycić wynik programu, który został już napisany.
nie mogę użyć:
server = subprocess.Popen(
[exe_name],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
jak program może nie spłukiwania. Zamiast tego miałem zamiar przekierować wyjście przez fifo. Działa to dobrze, jeśli ręcznie uruchamiam serwer.py, ale oczywiście nie, jeśli przekierowanie nie działa. ps -aux
pokazuje, że server.py
został poprawnie uruchomiony.
To działa. Communicate będzie blokować czytnik, dopóki serwer nie zakończy działania, ale teraz, gdy mogę przekierować, mogę wysłać wynik serwera do fifo. –
nie trzeba wywoływać '.communicate()' tutaj. 'subprocess.check_call ('command', stdout = file)' działa. – jfs