mirror of
https://github.com/openziti/zrok.git
synced 2025-06-24 19:51:32 +02: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 (
|
import (
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"sync"
|
"sync"
|
||||||
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Init(_ string) error {
|
func Init(_ string) error {
|
||||||
@ -52,7 +53,7 @@ func WaitChild(c *Child) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func StopChild(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 err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
package proctree
|
package proctree
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/kolesnikovae/go-winjob"
|
|
||||||
"golang.org/x/sys/windows"
|
"golang.org/x/sys/windows"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"sync"
|
"sync"
|
||||||
@ -72,7 +71,23 @@ func WaitChild(c *Child) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func StopChild(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 err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
x
Reference in New Issue
Block a user