Maison > développement back-end > Golang > Comment puis-je déterminer le PID de l'émetteur d'un signal dans Go ?

Comment puis-je déterminer le PID de l'émetteur d'un signal dans Go ?

Patricia Arquette
Libérer: 2024-12-10 00:44:10
original
620 Les gens l'ont consulté

How Can I Determine the PID of a Signal's Originator in Go?

Go : récupération de l'origine du signal

Dans Go, capturer des signaux est possible, mais déterminer le PID qui a déclenché un signal peut être difficile.

Limitations de la gestion des signaux

Go gère les gestionnaires de signaux en interne, et il n’existe aucun moyen officiel d’accéder au PID de l’expéditeur du signal. Les informations du signal renvoyées, comme observé dans l'exemple fourni, n'incluent pas ces données.

Approches alternatives

Utilisation d'une méthode alternative de communication, telle que des tuyaux ou des sémaphores , peut être plus adapté dans les cas où la détermination de l'origine du signal est cruciale.

Solution complexe de C

Bien qu'il ne soit pas officiellement pris en charge, il est possible de configurer un gestionnaire de signal personnalisé en C qui peut capturer le PID. Cependant, cette approche est complexe et présente des risques potentiels.

Voici un exemple basé sur une solution proposée par Ian du numéro GitHub 7227 :

package main

import (
    "C"
    "os"
    "syscall"
    "time"
)

func main() {
    C.test()
    pid := os.Getpid()
    for {
        syscall.Kill(pid, syscall.SIGUSR1)
        time.Sleep(time.Second)
    }
}
Copier après la connexion

Cet exemple utilise la sigaction de C pour établir un gestionnaire de signal personnalisé, qui imprime le PID de l'expéditeur.

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