code: func NewContainerIO(id string, opts ...ContainerIOOpts) (_ *ContainerIO, err error) {
  	c := &ContainerIO{
  		id:          id,
  		stdoutGroup: cioutil.NewWriterGroup(),
  		stderrGroup: cioutil.NewWriterGroup(),
  	}
  	for _, opt := range opts {
  		if err := opt(c); err != nil {
  			return nil, err
  		}
  	}
  	if c.fifos == nil {
  		return nil, errors.New("fifos are not set")
  	}
  	// Create actual fifos.
  	stdio, closer, err := newStdioPipes(c.fifos)
  	if err != nil {
  		return nil, err
  	}
  	c.stdioPipes = stdio
  	c.closer = closer
  	return c, nil
  }
docs: // NewContainerIO creates container io.