class_docstr: Background thread that forwards data from one pipe to another. 
  This is used to catch data from stdout/stderr of the child process
  and print it back out to stdout/stderr. We need this because this
  bug: http://bugs.python.org/issue3905  _requires_ us to catch
  stdout/stderr.
  
  *output* may be a file or 'stdout' or 'stderr'. In the latter cases,
  sys.stdout/stderr are retrieved once for every line that is output,
  which ensures that the correct behavior is achieved even if 
  sys.stdout/stderr are replaced at runtime.
code: def __init__(self, input, output, color):
      threading.Thread.__init__(self)
      self.input = input
      self.output = output
      self.lock = threading.Lock()
      self.daemon = True
      self.color = color
      self.finish = threading.Event()
      self.start()
  
imports: import atexit
  import inspect
  import multiprocessing.connection
  import os
  import signal
  import subprocess
  import sys
  import time
  import pickle
  from ..Qt import QT_LIB, mkQApp
  from ..util import cprint
  from .remoteproxy import ClosedError, LocalObjectProxy, NoResultError, ObjectProxy, RemoteEventHandler
  import threading
label_desc: Use image node_id 1 to create a new FileForwarder object from inherited base classes: threading with example: obj = FileForwarder(input, output, color)