Files
Sentinel-EdgeAgent/updater/main_linux.go
T
2026-05-26 13:53:23 +08:00

55 lines
986 B
Go

//go:build linux
// +build linux
package main
import (
"os"
"os/exec"
"strconv"
)
type mainProgramStarter struct{}
func (s *mainProgramStarter) GetMainName() string {
return "main"
}
func (s *mainProgramStarter) Start(targetExe string) error {
if err := os.Chmod(targetExe, 0755); err != nil {
return err
}
cmd := exec.Command(targetExe)
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
// Linux 下:先保持最简单,保证能跑
return cmd.Start()
}
// 判断进程是否在运行
func (s *mainProgramStarter) IsProcessRunning(pid int) (bool, error) {
if pid <= 0 {
return false, nil
}
procPath := "/proc/" + strconv.Itoa(pid)
_, err := os.Stat(procPath)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
// 其他错误(例如权限问题)
return false, err
}
// 杀掉进程
func (l *mainProgramStarter) KillProcess(pid int) error {
cmd := exec.Command("kill", "-9", strconv.Itoa(pid))
return cmd.Run()
}