comment envoyer un signal d’un programme à un autre?

J’utilise la queue de messages comme un ipc entre 2 programmes. Maintenant, je veux envoyer des données d’un programme à un autre en utilisant la queue de messages, puis l’intégrer via un signal SIGINT.

Je ne sais pas comment envoyer un signal d’un programme à un autre. Quelqu’un peut-il fournir un exemple de code s’il possède la solution?

#include  #include  int kill(pid_t pid, int sig); 

Signal dans linux peut être envoyé en utilisant kill system call il suffit de vérifier ce lien pour la documentation de kill système d’appel et exemple. vous pouvez voir l’homme -2 tuer aussi. et il est déconseillé d’utiliser SIGINT avec SIGUSR1 ou SIGUSR2

Notez qu’en utilisant l’appel système sigqueue (), vous pouvez transmettre des données supplémentaires avec votre signal. Voici une brève citation de “man 2 sigqueue”:

L’argument value est utilisé pour spécifier un élément de données d’accompagnement (un entier ou une valeur de pointeur) à envoyer avec le signal, et a le type suivant:

  union sigval { int sival_int; void *sival_ptr; }; 

C’est un moyen très pratique de transmettre un petit peu d’information entre deux processus. Je suis d’accord avec l’utilisateur ci-dessus – utilisez SIGUSR1 ou SIGUSR2 et un bon sigval, et vous pouvez passer ce que vous voulez.

Vous pouvez également passer un pointeur sur un object dans la mémoire partagée via sival_ptr et passer ainsi un object plus grand.

 system("kill -2 `pidof ` ");