From f5e19d7e16aaf9552a27fb909fc13a8dfcf22068 Mon Sep 17 00:00:00 2001 From: WAKAYAMA shirou Date: Sat, 18 Nov 2017 22:43:54 +0900 Subject: [PATCH] [process]windows: implements process.Kill using os/exec --- process/process_test.go | 22 +++++++++++++++++++++- process/process_windows.go | 4 +++- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/process/process_test.go b/process/process_test.go index 9947dea..84c24bd 100644 --- a/process/process_test.go +++ b/process/process_test.go @@ -3,6 +3,7 @@ package process import ( "fmt" "os" + "os/exec" "os/user" "reflect" "runtime" @@ -418,5 +419,24 @@ func Test_OpenFiles(t *testing.T) { for _, vv := range v { assert.NotEqual(t, "", vv.Path) } - +} + +func Test_Kill(t *testing.T) { + var cmd *exec.Cmd + if runtime.GOOS == "windows" { + cmd = exec.Command("choice", "/C", "YN", "/D", "Y", "/t", "3") + } else { + cmd = exec.Command("sleep", "3") + } + var wg sync.WaitGroup + wg.Add(1) + go func() { + assert.NotNil(t, cmd.Run()) + wg.Done() + }() + time.Sleep(100 * time.Millisecond) + p, err := NewProcess(int32(cmd.Process.Pid)) + assert.Nil(t, err) + assert.Nil(t, p.Kill()) + wg.Wait() } diff --git a/process/process_windows.go b/process/process_windows.go index bbd7762..41ceb34 100644 --- a/process/process_windows.go +++ b/process/process_windows.go @@ -4,6 +4,7 @@ package process import ( "fmt" + "os" "strings" "syscall" "time" @@ -402,7 +403,8 @@ func (p *Process) Terminate() error { } func (p *Process) Kill() error { - return common.ErrNotImplementedError + process := os.Process{Pid: int(p.Pid)} + return process.Kill() } func getFromSnapProcess(pid int32) (int32, int32, string, error) {