Cố gắng chuyển hướng đầu ra của một tiến trình con tới một tệp.subprocess.Popen() IO chuyển hướng
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)
Sản lượng xuất hiện trên màn hình, temp.txt
vẫn trống. Tôi đang làm gì sai?
Là nền tôi đang cố gắng nắm bắt đầu ra của một chương trình đã được viết.
tôi không thể sử dụng:
server = subprocess.Popen(
[exe_name],
stdin=subprocess.PIPE, stdout=subprocess.PIPE)
như chương trình có thể không tuôn ra. Thay vào đó, tôi sẽ chuyển hướng đầu ra thông qua một năm mươi. Điều này làm việc tốt nếu tôi tự khởi chạy server.py nhưng rõ ràng là không nếu tôi Popen()
gây ra chuyển hướng không hoạt động. ps -aux
cho thấy rằng server.py
đã được khởi chạy chính xác.
Điều đó có hiệu quả. Giao tiếp sẽ chặn người đọc cho đến khi máy chủ kết thúc nhưng bây giờ tôi có thể chuyển hướng tôi có thể gửi đầu ra của máy chủ đến nămo. –
không cần phải gọi '.communicate()' tại đây. 'subprocess.check_call ('command', stdout = file)' hoạt động. – jfs