From 231e90d2749ec79f01a8edab85de344e2fcbbb5f Mon Sep 17 00:00:00 2001 From: Faissal Elamraoui Date: Wed, 23 Jan 2019 10:21:40 +0100 Subject: [PATCH] Kill the server process gracefully on Windows See discussion in pull request #569 --- cmd/commands/run/watch.go | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/cmd/commands/run/watch.go b/cmd/commands/run/watch.go index e87a6aa..5e6b493 100644 --- a/cmd/commands/run/watch.go +++ b/cmd/commands/run/watch.go @@ -183,17 +183,24 @@ func Kill() { } }() if cmd != nil && cmd.Process != nil { - cmd.Process.Signal(os.Interrupt) + // Windows does not support Interrupt + if runtime.GOOS == "windows" { + cmd.Process.Signal(os.Kill) + } else { + 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") + beeLogger.Log.Info("Timeout. Force kill cmd process") err := cmd.Process.Kill() if err != nil { beeLogger.Log.Errorf("Error while killing cmd process: %s", err)