docs: def spawn(argv, master_read=_read, stdin_read=_read):
      """Create a spawned process."""
      if type(argv) == type(''):
          argv = (argv,)
      pid, master_fd = fork()
      if pid == CHILD:
          try:
              os.execlp(argv[0], *argv)
          except:
              # If we wanted to be really clever, we would use
              # the same method as subprocess() to pass the error
              # back to the parent.  For now just dump stack trace.
              traceback.print_exc()
          finally:
              os._exit(1)
      try:
          mode = tty.tcgetattr(STDIN_FILENO)
          tty.setraw(STDIN_FILENO)
          restore = 1
      except tty.error:    # This is the same as termios.error
          restore = 0
      try:
          _copy(master_fd, master_read, stdin_read)
      except OSError:
          # Some OSes never return an EOF on pty, just raise
          # an error instead.
          pass
      finally:
          if restore:
              tty.tcsetattr(STDIN_FILENO, tty.TCSAFLUSH, mode)
  
      os.close(master_fd)
      return os.waitpid(pid, 0)[1]