瀏覽代碼

Forward all signals to child process

Guillaume Tardif 5 年之前
父節點
當前提交
05a8582126
共有 1 個文件被更改,包括 12 次插入0 次删除
  1. 12 0
      cli/mobycli/exec.go

+ 12 - 0
cli/mobycli/exec.go

@@ -21,6 +21,7 @@ import (
 	"fmt"
 	"os"
 	"os/exec"
+	"os/signal"
 	"strings"
 
 	apicontext "github.com/docker/api/context"
@@ -61,6 +62,17 @@ func Exec() {
 	cmd.Stdout = os.Stdout
 	cmd.Stderr = os.Stderr
 
+	s := make(chan os.Signal)
+	signal.Notify(s) // catch all signals
+	go func() {
+		for sig := range s {
+			err := cmd.Process.Signal(sig)
+			if err != nil {
+				fmt.Printf("WARNING could not forward signal %s to %s : %s\n", sig.String(), ComDockerCli, err.Error())
+			}
+		}
+	}()
+
 	if err := cmd.Run(); err != nil {
 		if exiterr, ok := err.(*exec.ExitError); ok {
 			os.Exit(exiterr.ExitCode())