From af5cecfff0f49355e7ca8f0cb33156959c3f067e Mon Sep 17 00:00:00 2001 From: Chris Johns Date: Mon, 26 Nov 2018 10:01:53 +1100 Subject: rtemstoolkit: Fixes to the reader and writer threads for capturing - Use the 'read1' file handle call to return if any data is queued for reading from stdout or stderr. - Flush the stdin pipe in the writer thread. These changes let the execute module work on Python2 and Python3. --- rtemstoolkit/execute.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/rtemstoolkit/execute.py b/rtemstoolkit/execute.py index eb3c8c2..d509664 100755 --- a/rtemstoolkit/execute.py +++ b/rtemstoolkit/execute.py @@ -148,6 +148,7 @@ class execute(object): if encoding: lines = bytes(lines, sys.stdin.encoding) fh.write(lines) + fh.flush() except: break if lines == None or \ @@ -193,12 +194,12 @@ class execute(object): # and the process is shutting down. # try: - data = fh.read(4096) + data = fh.read1(4096) except: data = '' if len(data) == 0: if len(line) > 0: - _output_line(l + '\n', exe, prefix, out, count) + _output_line(line + '\n', exe, prefix, out, count) break # str and bytes are the same type in Python2 if type(data) is not str and type(data) is bytes: -- cgit v1.2.3