mirror of
https://github.com/Buriburizaem0n/nezha_domains.git
synced 2026-02-04 04:30:05 +00:00
📦 [agent v0.3.7] fix: cross compile
This commit is contained in:
31
pkg/utils/proccess_group.go
Normal file
31
pkg/utils/proccess_group.go
Normal file
@@ -0,0 +1,31 @@
|
||||
// +build !windows
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"os/exec"
|
||||
"syscall"
|
||||
)
|
||||
|
||||
type ProcessExitGroup struct {
|
||||
cmds []*exec.Cmd
|
||||
}
|
||||
|
||||
func NewProcessExitGroup() (ProcessExitGroup, error) {
|
||||
return ProcessExitGroup{}, nil
|
||||
}
|
||||
|
||||
func (g ProcessExitGroup) Dispose() error {
|
||||
for _, c := range g.cmds {
|
||||
if err := syscall.Kill(-c.Process.Pid, syscall.SIGKILL); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (g *ProcessExitGroup) AddProcess(cmd *exec.Cmd) error {
|
||||
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
|
||||
g.cmds = append(g.cmds, cmd)
|
||||
return nil
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
)
|
||||
|
||||
type ProcessExitGroup struct{}
|
||||
|
||||
func NewProcessExitGroup() (ProcessExitGroup, error) {
|
||||
return ProcessExitGroup{}, errors.New("not implement")
|
||||
}
|
||||
|
||||
func (g ProcessExitGroup) Dispose() error {
|
||||
return errors.New("not implement")
|
||||
}
|
||||
|
||||
func (g ProcessExitGroup) AddProcess(p *os.Process) error {
|
||||
return errors.New("not implement")
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"os"
|
||||
)
|
||||
|
||||
type ProcessExitGroup struct{}
|
||||
|
||||
func NewProcessExitGroup() (ProcessExitGroup, error) {
|
||||
return ProcessExitGroup{}, errors.New("not implement")
|
||||
}
|
||||
|
||||
func (g ProcessExitGroup) Dispose() error {
|
||||
return errors.New("not implement")
|
||||
}
|
||||
|
||||
func (g ProcessExitGroup) AddProcess(p *os.Process) error {
|
||||
return errors.New("not implement")
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
// +build windows
|
||||
|
||||
package utils
|
||||
|
||||
import (
|
||||
"os"
|
||||
"os/exec"
|
||||
"unsafe"
|
||||
|
||||
"golang.org/x/sys/windows"
|
||||
@@ -42,8 +44,8 @@ func (g ProcessExitGroup) Dispose() error {
|
||||
return windows.CloseHandle(windows.Handle(g))
|
||||
}
|
||||
|
||||
func (g ProcessExitGroup) AddProcess(p *os.Process) error {
|
||||
func (g ProcessExitGroup) AddProcess(cmd *exec.Cmd) error {
|
||||
return windows.AssignProcessToJobObject(
|
||||
windows.Handle(g),
|
||||
windows.Handle((*process)(unsafe.Pointer(p)).Handle))
|
||||
windows.Handle((*process)(unsafe.Pointer(cmd.Process)).Handle))
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user