This commit is contained in:
npc0-hue
2026-08-26 09:56:43 +08:00
parent 2b4974b561
commit 8e02a316fa
93 changed files with 21749 additions and 0 deletions
+59
View File
@@ -0,0 +1,59 @@
//go:build !windows
package runtime
import (
"os"
"os/exec"
)
type execManagedProcess struct {
cmd *exec.Cmd
}
func startManagedProcess(command ProcessCommand, files managedProcessFiles, _ string) (managedProcess, error) {
cmd := exec.Command(command.Args[0], command.Args[1:]...)
cmd.Dir = command.WorkDir
cmd.Env = os.Environ()
for key, value := range command.Env {
cmd.Env = append(cmd.Env, key+"="+value)
}
cmd.Stdout = files.stdout
cmd.Stderr = files.stderr
if err := cmd.Start(); err != nil {
return nil, err
}
return &execManagedProcess{cmd: cmd}, nil
}
func requestManagedProcessStop(identity ProcessIdentity) error {
process, err := os.FindProcess(identity.PID)
if err != nil {
return err
}
return process.Kill()
}
func forceManagedProcessStop(identity ProcessIdentity) error {
return requestManagedProcessStop(identity)
}
func (process *execManagedProcess) PID() int {
return process.cmd.Process.Pid
}
func (process *execManagedProcess) TargetPID() int {
return process.PID()
}
func (process *execManagedProcess) Wait() (int, error) {
err := process.cmd.Wait()
if process.cmd.ProcessState == nil {
return -1, err
}
return process.cmd.ProcessState.ExitCode(), err
}
func (process *execManagedProcess) Kill() error {
return process.cmd.Process.Kill()
}