Maison > développement back-end > Golang > Un échec d'appel os.FindProcess dans Go signifie-t-il nécessairement qu'un processus est terminé ?

Un échec d'appel os.FindProcess dans Go signifie-t-il nécessairement qu'un processus est terminé ?

Barbara Streisand
Libérer: 2024-11-08 07:25:02
original
359 Les gens l'ont consulté

Does a Failed os.FindProcess Call in Go Necessarily Mean a Process Has Terminated?

Détermination de l'existence d'un processus dans Go

Dans Go, la fonction os.FindProcess peut être utilisée pour récupérer un processus par son PID. Cependant, si cette fonction renvoie une erreur, cela indique-t-il nécessairement que le processus est terminé ?

Vérification de l'existence du processus

Selon la page de manuel de kill(2 ) sous Unix, envoyer un signal de 0 à un processus n'envoie pas réellement de signal mais vérifie si le processus est vivant. Cette approche peut être adaptée dans Go pour déterminer l'existence d'un processus.

Implémentation de Go

Le code Go suivant illustre cette technique :

package main

import (
    "fmt"
    "log"
    "os"
    "strconv"
    "syscall"
)

func main() {
    for _, p := range os.Args[1:] {
        pid, err := strconv.ParseInt(p, 10, 64)
        if err != nil {
            log.Fatal(err)
        }
        process, err := os.FindProcess(int(pid))
        if err != nil {
            fmt.Printf("Failed to find process: %s\n", err)
        } else {
            err := process.Signal(syscall.Signal(0))
            fmt.Printf("process.Signal on pid %d returned: %v\n", pid, err)
        }

    }
}
Copier après la connexion

Exemple de sortie

Lors de son exécution, ce code affichera l'état de plusieurs processus :

$ ./kill 1 $$ 123
process.Signal on pid 1 returned: operation not permitted
process.Signal on pid 12606 returned: <nil>
process.Signal on pid 123 returned: no such process
Copier après la connexion

Dans cet exemple, le processus 1 renvoie une erreur car il est n'appartient pas à l'utilisateur actuel. Le processus 12606 renvoie zéro car il est actif et appartient à l'utilisateur. Le processus 123 renvoie une erreur car il n'existe plus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal