Достаточно ли os.FindProcess для проверки существования процесса?
В сценариях, где известен PID процесса, вы можете задаться вопросом, можно ли использовать Только os.FindProcess адекватно устанавливает существование процесса. В этой статье рассматривается этот конкретный сценарий и предлагается альтернативный подход, использующий принципы операционной системы. при проверке наличия процесса. Однако недостаточно учитывать только то, возвращает ли он ошибку. Исключения, такие как проблемы с разрешениями, могут привести к ложноотрицательным результатам.
Альтернативный подход с использованием kill -s 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 приводит к ошибке «операция не разрешена», это предполагает, что процесс существует, но не принадлежит пользователю, пытающемуся выполнить операцию. проверка.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3