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.
This commit is contained in:
Chris Johns
2018-11-26 10:01:53 +11:00
parent 71cede05ae
commit af5cecfff0

View File

@@ -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: