src/server/pkg/exec/exec.go
func (c *Cmd) StdoutPipe() (io.ReadCloser, error) {
	if c.Stdout != nil {
		return nil, errors.New("exec: Stdout already set")
	}
	if c.Process != nil {
		return nil, errors.New("exec: StdoutPipe after process started")
	}
	pr, pw, err := os.Pipe()
	if err != nil {
		return nil, err
	}
	c.Stdout = pw
	c.closeAfterStart = append(c.closeAfterStart, pw)
	c.closeAfterWait = append(c.closeAfterWait, pr)
	return pr, nil
}
func (c *Cmd) StdoutPipe() (io.ReadCloser, error) {
	if c.Stdout != nil {
		return nil, errors.New("exec: Stdout already set")
	}
	if c.Process != nil {
		return nil, errors.New("exec: StdoutPipe after process started")
	}
	pr, pw, err := os.Pipe()
	if err != nil {
		return nil, err
	}
	c.Stdout = pw
	c.closeAfterStart = append(c.closeAfterStart, pw)
	c.closeAfterWait = append(c.closeAfterWait, pr)
	return pr, nil
}
func ( c * Cmd ) StdoutPipe ( ) ( io . ReadCloser , error ) { if c . Stdout != nil { return nil , errors . New ( " " ) } if c . Process != nil { return nil , errors . New ( " " ) } pr , pw , err := os . Pipe ( ) if err != nil { return nil , err } c . Stdout = pw c . closeAfterStart = append ( c . closeAfterStart , pw ) c . closeAfterWait = append ( c . closeAfterWait , pr ) return pr , nil }
// StdoutPipe returns a pipe that will be connected to the command's
// standard output when the command starts.
//
// Wait will close the pipe after seeing the command exit, so most callers
// need not close the pipe themselves; however, an implication is that
// it is incorrect to call Wait before all reads from the pipe have completed.
// For the same reason, it is incorrect to call Run when using StdoutPipe.
// See the example for idiomatic usage.
StdoutPipe returns a pipe that will be connected to the command s standard output when the command starts . Wait will close the pipe after seeing the command exit so most callers need not close the pipe themselves ; however an implication is that it is incorrect to call Wait before all reads from the pipe have completed . For the same reason it is incorrect to call Run when using StdoutPipe . See the example for idiomatic usage .