From 8252ea9f88f37eb7f00a9fb925b0de7f7c4dd026 Mon Sep 17 00:00:00 2001 From: sanghee Date: Fri, 4 Jan 2019 23:04:38 +0900 Subject: [PATCH] When restarting, terminate process gracefully --- cmd/commands/run/watch.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/cmd/commands/run/watch.go b/cmd/commands/run/watch.go index be547cb..5e9783a 100644 --- a/cmd/commands/run/watch.go +++ b/cmd/commands/run/watch.go @@ -148,7 +148,7 @@ func AutoBuild(files []string, isgenerate bool) { } appName := appname if err == nil { - + if runtime.GOOS == "windows" { appName += ".exe" } @@ -183,9 +183,20 @@ func Kill() { } }() if cmd != nil && cmd.Process != nil { - err := cmd.Process.Kill() - if err != nil { - beeLogger.Log.Errorf("Error while killing cmd process: %s", err) + //err := cmd.Process.Kill() + cmd.Process.Signal(os.Interrupt) + ch := make(chan struct{}, 1) + go func() { + cmd.Wait() + ch <- struct{}{} + }() + select { + case <-ch: + return + case <-time.After(10 * time.Second): + beeLogger.Log.Info("Timeout; Force kill cmd process") + cmd.Process.Kill() + return } } }