code: func NewProcess() *Process {
  	c := new(processCmd)
  
  	return &Process{
  		Start: c.start,
  		Wait:  c.wait,
  	}
  }
docs: // NewProcess creates a new Process, where the Start function use exec.CommandContext to create and start the process.
  // The Wait function waits for the process to finish and returns the error returned by exec.Cmd.Wait().
  // Prior to Wait returning, the exec.Cmd.Wait() error is used to set the ProcessState.ExitCode, if error is of type exec.ExitError.
  // The ctx param may be used to kill the process via the ProcessManager.Kill method.
  // The VixMsgStartProgramRequest param fields are mapped to the exec.Cmd counterpart fields.
  // Processes are started within a sub-shell, allowing for i/o redirection, just as with the C version of vmware-tools.