«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Достаточно ли os.FindProcess для надежной проверки существования процесса?

Достаточно ли os.FindProcess для надежной проверки существования процесса?

Опубликовано 22 ноября 2024 г.
Просматривать:868

Is os.FindProcess Enough to Reliably Verify Process Existence?

Достаточно ли os.FindProcess для проверки существования процесса?

В сценариях, где известен PID процесса, вы можете задаться вопросом, можно ли использовать Только os.FindProcess адекватно устанавливает существование процесса. В этой статье рассматривается этот конкретный сценарий и предлагается альтернативный подход, использующий принципы операционной системы. при проверке наличия процесса. Однако недостаточно учитывать только то, возвращает ли он ошибку. Исключения, такие как проблемы с разрешениями, могут привести к ложноотрицательным результатам.

Альтернативный подход с использованием kill -s 0

  • Этот метод использует традиции Unix отправки сигнала 0 процессу. Отсутствие ошибки указывает на существование процесса.

Следующая функция Go демонстрирует это:

import ( "бревно" "ОС/exec" "стрконв" ) func checkPid(pid int) bool { out, ошибка := exec.Command("kill", "-s", "0", strconv.Itoa(pid)).CombinedOutput() если ошибка != ноль { log.Println(ошибка) } если строка(выход) == "" { возвращаем true // pid существует } вернуть ложь }
  • Улучшенное обнаружение существования процесса
import (
    "log"
    "os/exec"
    "strconv"
)

func checkPid(pid int) bool {
    out, err := exec.Command("kill", "-s", "0", strconv.Itoa(pid)).CombinedOutput()
    if err != nil {
        log.Println(err)
    }

    if string(out) == "" {
        return true // pid exist
    }
    return false
}

Например, если команда kill -s 0 приводит к ошибке «операция не разрешена», это предполагает, что процесс существует, но не принадлежит пользователю, пытающемуся выполнить операцию. проверка.

    Заключение
  • Хотя os.FindProcess предоставляет начальные признаки существования процесса, использование традиционного подхода Unix с использованием kill -s 0 обеспечивает более полную проверку и понимание владения процессом.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3