Maison > Article > développement back-end > Comment Golang utilise la bibliothèque os/exec pour interroger le processus
Le langage Go est un langage de programmation open source. Il dispose non seulement d'une riche bibliothèque standard et d'un support efficace de programmation simultanée, mais dispose également d'une puissante bibliothèque de traitement de processus - os/exec. Dans cet article, nous expliquerons comment interroger les processus à l'aide de la bibliothèque os/exec.
Tout d'abord, regardons un exemple simple :
package main import ( "fmt" "os/exec" ) func main() { cmd := exec.Command("ps", "-ef") output, err := cmd.Output() if err != nil { fmt.Println(err) return } fmt.Println(string(output)) }
Dans l'exemple ci-dessus, nous avons créé un objet Command à l'aide de la bibliothèque os/exec et exécuté la commande ps -ef. La méthode Output de l'objet Command capture la sortie standard du processus dans un tableau d'octets et la renvoie.
Si vous exécutez ce code, vous verrez une liste de tous les processus en cours d'exécution sur votre système Linux. Mais que se passe-t-il si vous souhaitez simplement trouver le processus nommé « monprocessus » ?
Avant de continuer, nous devons connaître le format de la sortie de la commande ps. La commande ps génère le contenu au format suivant :
UID PID PPID C STIME TTY TIME CMD root 1 0 0 10:38 ? 00:00:01 /sbin/init root 2 0 0 10:38 ? 00:00:00 [kthreadd]
Dans ce format, la deuxième colonne est l'ID du processus et la dixième colonne est le nom du processus. Nous pouvons utiliser ces colonnes lors de l’interrogation des processus.
Maintenant, modifions l'exemple précédent pour afficher uniquement les processus nommés « myprocess » :
package main import ( "fmt" "os/exec" "strings" ) func main() { cmd := exec.Command("ps", "-ef") output, err := cmd.Output() if err != nil { fmt.Println(err) return } lines := strings.Split(string(output), "\n") for _, line := range lines { if strings.Contains(line, "myprocess") { fmt.Println(line) } } }
Dans cet exemple, nous utilisons d'abord la fonction strings.Split pour diviser la liste des processus en lignes de texte. Après cela, nous parcourons chaque ligne et recherchons la ligne nommée "myprocess". Si trouvé, nous imprimons cette ligne.
Bien sûr, cet exemple n'est qu'un exemple. Dans les applications réelles, vous devrez peut-être filtrer les processus en fonction de différentes conditions. Heureusement, la bibliothèque os/exec fournit tous les outils nécessaires.
Maintenant, si vous exécutez ce code et qu'un processus appelé "myprocess" est en cours d'exécution, vous devriez voir un résultat similaire à :
myuser 1234 1 0 Apr09 ? 00:00:00 myprocess
Ici, nous avons travaillé sur un exemple simple qui montre comment utiliser l'os/exec processus de requêtes de bibliothèque. Bien sûr, os/exec peut faire bien plus que cela. Quelle que soit la complexité de vos besoins, vous pouvez lui faire confiance pour vous fournir les outils nécessaires à la gestion du processus.
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!