From e34273628f465b5a32b109deca930a19b9858320 Mon Sep 17 00:00:00 2001 From: Solomon Hykes Date: Thu, 27 Mar 2014 18:26:42 -0700 Subject: [PATCH] beam/examples/beamsh: support for background commands with '&' terminator Docker-DCO-1.1-Signed-off-by: Solomon Hykes (github: shykes) --- examples/beamsh/beamsh.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/examples/beamsh/beamsh.go b/examples/beamsh/beamsh.go index fac986e14e..4234e9d988 100644 --- a/examples/beamsh/beamsh.go +++ b/examples/beamsh/beamsh.go @@ -136,9 +136,19 @@ func scriptString(script []*dockerscript.Command) string { func executeScript(client *net.UnixConn, script []*dockerscript.Command) error { Debugf("executeScript(%s)\n", scriptString(script)) defer Debugf("executeScript(%s) DONE\n", scriptString(script)) + var background sync.WaitGroup + defer background.Wait() for _, cmd := range script { - if err := executeCommand(client, cmd); err != nil { - return err + if cmd.Background { + background.Add(1) + go func(client *net.UnixConn, cmd *dockerscript.Command) { + executeCommand(client, cmd) + background.Done() + }(client, cmd) + } else { + if err := executeCommand(client, cmd); err != nil { + return err + } } } return nil