Как убить процесс

«Как убить процесс» — вопрос из категории Linux, который задают на 28% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В 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