2 つのプログラム間の IPC としてメッセージ キューを使用しています。今、メッセージキューを使用してあるプログラムから別のプログラムにデータを送信し、シグナル SIGINT を介してそれを親密にしたいと考えています。
あるプログラムから別のプログラムにシグナルを送信する方法がわかりません。解決策があれば、誰でもサンプルコードを提供できますか。
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
Linux のシグナルは kill システム コールを使用して送信できます。 kill システム コールと例のドキュメントについては、このリンクを確認してください。man -2 kill も見ることができます。SIGINT を使用することはお勧めできません SIGUSR1 または SIGUSR2 を使用します
sigqueue() システム コールを使用すると、シグナルとともに追加のデータを渡すことができることに注意してください。「man 2 sigqueue」からの簡単な引用を次に示します。
value 引数は、シグナルとともに送信される付随するデータ項目 (整数またはポインター値) を指定するために使用され、次の型を持ちます。
union sigval {
int sival_int;
void *sival_ptr;
};
これは、2 つのプロセス間で少量の情報を渡すのに非常に便利な方法です。上記のユーザーに同意します-SIGUSR1またはSIGUSR2と適切なsigvalを使用すると、好きなものを渡すことができます。
また、sival_ptr を介して共有メモリ内のオブジェクトへのポインターを渡し、より大きなオブジェクトをその方法で渡すこともできます。
system("kill -2 `pidof <app_name_here>` ");