docs: def start_process(args: List[str],
                    stdin: Any = None,
                    stdout: Any = None,
                    stderr: Any = None) -> Popen:
      """
      Launch a child process and record it in our :data:`processes` variable.
  
      Args:
          args: program and its arguments, as a list
          stdin: typically None
          stdout: use None to perform no routing, which preserves console colour!
              Otherwise, specify somewhere to route stdout. See subprocess
              documentation. If either is PIPE, you'll need to deal with the
              output.
          stderr: As above. You can use stderr=STDOUT to route stderr to the same
              place as stdout.
  
      Returns:
          The process object (which is also stored in :data:`processes`).
      """
      log.debug("{!r}", args)
      global processes
      global proc_args_list
      proc = Popen(args, stdin=stdin, stdout=stdout, stderr=stderr)
      # proc = Popen(args, stdin=None, stdout=PIPE, stderr=STDOUT)
      # proc = Popen(args, stdin=None, stdout=PIPE, stderr=PIPE)
      # Can't preserve colour: http://stackoverflow.com/questions/13299550/preserve-colored-output-from-python-os-popen  # noqa
      processes.append(proc)
      proc_args_list.append(args)
      return proc