[process]windows: implements process.Kill using os/exec

This commit is contained in:
WAKAYAMA shirou 2017-11-18 22:43:54 +09:00
parent 384a55110a
commit f5e19d7e16
2 changed files with 24 additions and 2 deletions

View File

@ -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()
}

View File

@ -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) {