mirror of
https://github.com/openziti/zrok.git
synced 2024-11-25 17:43:53 +01:00
adjust 'proctree' to use SIGINT instead of SIGKILL (#748)
This commit is contained in:
parent
2163f0220d
commit
9cf5787c47
@ -5,6 +5,7 @@ package proctree
|
||||
import (
|
||||
"os/exec"
|
||||
"sync"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
func Init(_ string) error {
|
||||
@ -52,7 +53,7 @@ func WaitChild(c *Child) error {
|
||||
}
|
||||
|
||||
func StopChild(c *Child) error {
|
||||
if err := c.cmd.Process.Kill(); err != nil {
|
||||
if err := syscall.Kill(c.cmd.Process.Pid, syscall.SIGINT); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
@ -3,7 +3,6 @@
|
||||
package proctree
|
||||
|
||||
import (
|
||||
"github.com/kolesnikovae/go-winjob"
|
||||
"golang.org/x/sys/windows"
|
||||
"os/exec"
|
||||
"sync"
|
||||
@ -72,7 +71,23 @@ func WaitChild(c *Child) error {
|
||||
}
|
||||
|
||||
func StopChild(c *Child) error {
|
||||
if err := c.cmd.Process.Kill(); err != nil {
|
||||
if err := sendSigInt(c); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func sendSigInt(c *Child) error {
|
||||
dll, err := syscall.LoadDLL("kernel32.dll")
|
||||
if er != nil {
|
||||
return err
|
||||
}
|
||||
proc, err := dll.FindProc("GenerateConsoleCtrlEvent")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
r, _, err := proc.Call(syscall.CTRL_BREAK_EVENT, uintptr(c.cmd.Process.Pid))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
Loading…
Reference in New Issue
Block a user