docstr: Run in a thread to move output from a pipe to a queue.
docstr_tok: ["Run","in","a","thread","to","move","output","from","a","pipe","to","a","queue","."]
code: def _read_incoming(self):
      """Run in a thread to move output from a pipe to a queue."""
      fileno = self.proc.stdout.fileno()
      while 1:
          buf = b""
          try:
              buf = os.read(fileno, 1024)
          except OSError as e:
              self._log(e, "read")
  
          if not buf:
              # This indicates we have reached EOF
              self._read_queue.put(None)
              return
  
          self._read_queue.put(buf)
  
imports: import os
  import threading
  import subprocess
  import sys
  import time
  import signal
  import shlex
  from .spawnbase import SpawnBase, PY3
  from .exceptions import EOF
  from .utils import string_types
label_desc: Use image node_id 3 for calling the PopenSpawn obj's underlying member method code with example usage: obj._read_incoming() without return types