如何将信号从一个程序发送到另一个程序?

我使用消息队列作为两个程序之间的ipc。 现在我想用一个消息队列将数据从一个程序发送到另一个程序,然后通过一个信号SIGINT来隐藏它。

我不知道如何从一个程序发送信号到另一个程序。 任何人都可以提供一个示例代码,如果他们有解决scheme。

Solutions Collecting From Web of "如何将信号从一个程序发送到另一个程序?"

#include <sys/types.h> #include <signal.h> int kill(pid_t pid, int sig); 

Linux中的信号可以使用kill system call来发送,只需要查看这个链接 ,了解kill system call的文档和例子。 你可以看到男人-2杀也。 不建议使用SIGINT使用SIGUSR1或SIGUSR2

请注意,通过使用sigqueue()系统调用,您可以将多余的数据与信号一起传递。 以下是“man 2 sigqueue”的简短引用:

value参数用于指定伴随信号一起发送的伴随数据项(或者是整数或者指针值),具有以下类型:

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

这是在两个进程之间传递一点信息的一个非常方便的方法。 我同意上面的用户 – 使用SIGUSR1或SIGUSR2和一个好的sigval,你可以通过任何你想要的。

你也可以通过sival_ptr传递一个指向共享内存中某个对象的指针,并以这种方式传递一个更大的对象。

 system("kill -2 `pidof <app_name_here>` ");