Golang est un langage de programmation puissant qui prend en charge les appels API de bas niveau pour de nombreux systèmes d'exploitation. En tant que programmeur Golang, vous devez souvent gérer et surveiller les processus exécutés sur le système d'exploitation. Dans cet article, nous explorerons comment interroger les noms de processus à l'aide de Golang.
1. Définition du nom du processus
Un processus fait référence à un programme en cours d'exécution dans le système d'exploitation. Chaque processus possède un ID de processus (PID) unique et un nom de processus. Le nom du processus est l'identifiant du processus dans le système, généralement le nom de l'application. Par exemple, « chrome.exe » dans les systèmes Windows représente une instance en cours d'exécution du navigateur Google Chrome.
Dans les systèmes Linux, le nom du processus n'est pas seulement le nom de l'application, mais inclut également l'état et d'autres informations du processus. Par exemple, « sshd : user@pts/0 » indique un processus de serveur SSH en cours d'exécution qui communique avec le terminal d'exploitation (pts/0) de l'utilisateur nommé « user ».
2. Interroger le nom du processus
Pour interroger le nom du processus en cours d'exécution, nous devons utiliser les progiciels os et syscall de Golang. Le progiciel syscall fournit une interface d'appel système qui peut accéder aux fonctions sous-jacentes du système d'exploitation.
1. Obtenez l'ID du processus
Nous pouvons utiliser le package OS de Golang pour obtenir le PID du processus en cours. Voici l'exemple de code :
package main import ( "fmt" "os" ) func main() { pid := os.Getpid() fmt.Printf("Current process ID: %d ", pid) }
2. Utilisez syscall pour obtenir le nom du processus
Nous pouvons utiliser la fonction Getpgid du package syscall pour obtenir le PGID (Process Group ID) du processus spécifié. Nous pouvons ensuite utiliser le fichier stat dans le système de fichiers /proc pour analyser le nom et l'état du processus.
Voici l'exemple de code :
package main import ( "fmt" "os" "syscall" ) func getProcessName(pid int) (string, error) { pgid, err := syscall.Getpgid(pid) if err != nil { return "", err } statFile := fmt.Sprintf("/proc/%d/stat", pgid) f, err := os.Open(statFile) if err != nil { return "", err } defer f.Close() var comm string fmt.Fscanf(f, "%d (%s)", &pgid, &comm) return comm, nil } func main() { pid := os.Getpid() name, err := getProcessName(pid) if err != nil { fmt.Println(err) return } fmt.Printf("PID %d, Process name: %s ", pid, name) }
Dans le code ci-dessus, nous utilisons la fonction fmt.Fscanf pour lire le nom du processus à partir du fichier stat. Cette fonction est similaire à la fonction fmt.Scanf, mais nous permet de spécifier une chaîne de format pour lire les données.
Lors de la lecture du nom du processus, nous devons utiliser des parenthèses pour entourer le nom car il y a des parenthèses autour du nom dans le format de fichier statistique.
3. Résumé
Dans cet article, nous avons appris à utiliser Golang pour interroger le nom du processus. Nous utilisons les packages os et syscall pour obtenir le PID du processus actuel et le PGID du processus spécifié, puis utilisons le fichier stat dans le système de fichiers /proc pour analyser le nom et l'état.
Les puissantes fonctionnalités de Golang nous permettent de gérer et de surveiller plus facilement les processus exécutés sur le système d'exploitation. Si vous souhaitez en savoir plus sur la technologie de gestion des processus de Golang, vous pouvez consulter les documents et didacticiels pertinents, ainsi que vous référer à la documentation officielle et aux exemples de code de Golang.
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!