//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() }