Merge pull request #1755 from calmh/fix-1754

Wait for stdout/stderr to close (fixes #1754)
This commit is contained in:
Audrius Butkevicius 2015-05-03 22:45:00 +03:00
commit 7e29a8b927
1 changed files with 16 additions and 4 deletions

View File

@ -106,12 +106,24 @@ func monitorMain() {
stdoutLastLines = make([]string, 0, 50)
stdoutMut.Unlock()
go copyStderr(stderr, dst)
go copyStdout(stdout, dst)
wg := sync.NewWaitGroup()
wg.Add(1)
go func() {
copyStderr(stderr, dst)
wg.Done()
}()
wg.Add(1)
go func() {
copyStdout(stdout, dst)
wg.Done()
}()
exit := make(chan error)
go func() {
wg.Wait()
exit <- cmd.Wait()
}()
@ -149,7 +161,7 @@ func monitorMain() {
}
}
func copyStderr(stderr io.ReadCloser, dst io.Writer) {
func copyStderr(stderr io.Reader, dst io.Writer) {
br := bufio.NewReader(stderr)
var panicFd *os.File
@ -192,7 +204,7 @@ func copyStderr(stderr io.ReadCloser, dst io.Writer) {
}
}
func copyStdout(stdout io.ReadCloser, dst io.Writer) {
func copyStdout(stdout io.Reader, dst io.Writer) {
br := bufio.NewReader(stdout)
for {
line, err := br.ReadString('\n')