From: Russ Cox Date: Wed, 15 Oct 2014 17:09:59 +0000 (-0400) Subject: os/exec: document that Stdin goroutine must finish in Wait X-Git-Tag: go1.4beta1~116 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=05c4b69f848a2de7acc604285d18e995f646adfc;p=gostls13.git os/exec: document that Stdin goroutine must finish in Wait Fixes #7990. LGTM=iant, bradfitz R=bradfitz, iant, robryk CC=golang-codereviews https://golang.org/cl/156220043 --- diff --git a/src/os/exec/exec.go b/src/os/exec/exec.go index 4aded41716..72b4905d56 100644 --- a/src/os/exec/exec.go +++ b/src/os/exec/exec.go @@ -55,8 +55,15 @@ type Cmd struct { // calling process's current directory. Dir string - // Stdin specifies the process's standard input. If Stdin is - // nil, the process reads from the null device (os.DevNull). + // Stdin specifies the process's standard input. + // If Stdin is nil, the process reads from the null device (os.DevNull). + // If Stdin is an *os.File, the process's standard input is connected + // directly to that file. + // Otherwise, during the execution of the command a separate + // goroutine reads from Stdin and delivers that data to the command + // over a pipe. In this case, Wait does not complete until the goroutine + // stops copying, either because it has reached the end of Stdin + // (EOF or a read error) or because writing to the pipe returned an error. Stdin io.Reader // Stdout and Stderr specify the process's standard output and error.