From e58130cc6b534b92ca4c42e864a66082394467bd Mon Sep 17 00:00:00 2001 From: zeeZ Date: Thu, 4 Jun 2020 14:28:27 +0200 Subject: [PATCH] Wait for cmd reads to complete before calling Wait() --- utils/utils.go | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/utils/utils.go b/utils/utils.go index 2d6dce27..06b71912 100644 --- a/utils/utils.go +++ b/utils/utils.go @@ -13,6 +13,7 @@ import ( "os/exec" "strconv" "strings" + "sync" "time" "github.com/ararog/timeago" @@ -129,14 +130,18 @@ func Command(name string, args ...string) (string, string, error) { return "", "", err } + var wg sync.WaitGroup + + wg.Add(1) go func() { + defer wg.Done() stdout, errStdout = copyAndCapture(os.Stdout, stdoutIn) }() - go func() { - stderr, errStderr = copyAndCapture(os.Stderr, stderrIn) - }() + stderr, errStderr = copyAndCapture(os.Stderr, stderrIn) + // call testCmd.Wait() only after reads from all pipes have completed + wg.Wait() err = testCmd.Wait() if err != nil { return string(stdout), string(stderr), err