code: func (l *LinuxFactory) StartInitialization() (err error) {
  	pipefd, err := strconv.Atoi(os.Getenv("_LIBCONTAINER_INITPIPE"))
  	if err != nil {
  		return err
  	}
  	var (
  		pipe = os.NewFile(uintptr(pipefd), "pipe")
  		it   = initType(os.Getenv("_LIBCONTAINER_INITTYPE"))
  	)
  	// clear the current process's environment to clean any libcontainer
  	// specific env vars.
  	os.Clearenv()
  	defer func() {
  		// if we have an error during the initialization of the container's init then send it back to the
  		// parent process in the form of an initError.
  		if err != nil {
  			// ensure that any data sent from the parent is consumed so it doesn't
  			// receive ECONNRESET when the child writes to the pipe.
  			ioutil.ReadAll(pipe)
  			if err := json.NewEncoder(pipe).Encode(newSystemError(err)); err != nil {
  				panic(err)
  			}
  		}
  		// ensure that this pipe is always closed
  		pipe.Close()
  	}()
  	i, err := newContainerInit(it, pipe)
  	if err != nil {
  		return err
  	}
  	return i.Init()
  }
docs: // StartInitialization loads a container by opening the pipe fd from the parent to read the configuration and state
  // This is a low level implementation detail of the reexec and should not be consumed externally