Os.FindProcess é suficiente para verificar a existência do processo?
Em cenários onde o PID de um processo é conhecido, você pode se perguntar se utilizar os.FindProcess por si só estabelece adequadamente a existência do processo. Este artigo investiga esse cenário específico e fornece uma abordagem alternativa que aproveita os princípios do sistema operacional. na verificação da presença de um processo. No entanto, considerar apenas se retorna um erro é insuficiente. Exceções, como problemas de permissão, podem levar a falsos negativos.
Abordagem alternativa usando kill -s 0
A seguinte função Go demonstra isso:
import ( "registro" "os/exec" "strconv" ) func checkPid(pid int) bool { fora, err := exec.Command("kill", "-s", "0", strconv.Itoa(pid)).CombinedOutput() se errar! = nulo { log.Println(erro) } if string(saída) == "" { retornar verdadeiro // pid existe } retornar falso }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 }
Por exemplo, se o comando kill -s 0 resultar em um erro de "operação não permitida", ele sugere que o processo existe, mas não pertence ao usuário que está tentando executar o processo. verificação.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3