Ответ
В Go можно убить процесс по его PID с помощью пакета os и системных вызовов. Основные способы:
package main
import (
"os"
"os/exec"
"syscall"
)
func main() {
// Запускаем процесс (пример)
cmd := exec.Command("sleep", "100")
cmd.Start()
// Получаем PID процесса
pid := cmd.Process.Pid
// Вариант 1: через Signal (SIGKILL)
proc, _ := os.FindProcess(pid)
proc.Signal(syscall.SIGKILL) // или SIGTERM для более мягкого завершения
// Вариант 2: через Kill()
cmd.Process.Kill() // аналог SIGKILL
// Ждем завершения (опционально)
cmd.Process.Wait()
}
Важные моменты:
- SIGKILL (9) - немедленное завершение, нельзя перехватить
- SIGTERM (15) - мягкое завершение, можно перехватить
- На Windows вместо сигналов используется
TerminateProcess