code: func (c *Gcd) StartProcess(exePath, userDir, port string) error {
  	c.port = port
  	c.addr = fmt.Sprintf("%s:%s", c.host, c.port)
  	c.profileDir = userDir
  	c.apiEndpoint = fmt.Sprintf("http://%s/json", c.addr)
  	// profile directory
  	c.flags = append(c.flags, fmt.Sprintf("--user-data-dir=%s", c.profileDir))
  	// debug port to use
  	c.flags = append(c.flags, fmt.Sprintf("--remote-debugging-port=%s", port))
  	// bypass first run check
  	c.flags = append(c.flags, "--no-first-run")
  	// bypass default browser check
  	c.flags = append(c.flags, "--no-default-browser-check")
  
  	c.chromeCmd = exec.Command(exePath, c.flags...)
  	// add custom environment variables.
  	c.chromeCmd.Env = os.Environ()
  	c.chromeCmd.Env = append(c.chromeCmd.Env, c.env...)
  
  	return c.startProcess()
  }
docs: // StartProcess the process
  // exePath - the path to the executable
  // userDir - the user directory to start from so we get a fresh profile
  // port - The port to listen on.