code: func NewExecIO(id, root string, tty, stdin bool) (*ExecIO, error) {
  	fifos, err := newFifos(root, id, tty, stdin)
  	if err != nil {
  		return nil, err
  	}
  	stdio, closer, err := newStdioPipes(fifos)
  	if err != nil {
  		return nil, err
  	}
  	return &ExecIO{
  		id:         id,
  		fifos:      fifos,
  		stdioPipes: stdio,
  		closer:     closer,
  	}, nil
  }
docs: // NewExecIO creates exec io.