Maison > développement back-end > Golang > le corps du texte

Comment Golang utilise la bibliothèque os/exec pour interroger le processus

PHPz
Libérer: 2023-04-23 10:30:09
original
1069 Les gens l'ont consulté

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))
}
Copier après la connexion

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]
Copier après la connexion

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)
        }
    }
}
Copier après la connexion

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
Copier après la connexion

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal