code: func New(i *NewInput) (*Child, error) {
  	if i == nil {
  		i = new(NewInput)
  	}
  
  	if len(i.Command) == 0 {
  		return nil, ErrMissingCommand
  	}
  
  	child := &Child{
  		stdin:        i.Stdin,
  		stdout:       i.Stdout,
  		stderr:       i.Stderr,
  		command:      i.Command,
  		args:         i.Args,
  		env:          i.Env,
  		timeout:      i.Timeout,
  		reloadSignal: i.ReloadSignal,
  		killSignal:   i.KillSignal,
  		killTimeout:  i.KillTimeout,
  		splay:        i.Splay,
  		stopCh:       make(chan struct{}, 1),
  	}
  
  	return child, nil
  }
docs: // New creates a new child process for management with high-level APIs for
  // sending signals to the child process, restarting the child process, and
  // gracefully terminating the child process.