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

时间:2009-03-12 09:32:14

标签: linux signals

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

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

4 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:5)

linux中的信号可以使用kill system调用发送,只需检查此link以获取kill system调用和示例的文档。你也可以看到男人-2杀人。并且不建议使用SIGINT使用SIGUSR1或SIGUSR2

答案 2 :(得分:1)

请注意,通过使用sigqueue()系统调用,您可以传递额外的数据和信号。以下是“man 2 sigqueue”的简短引用:

  

value参数用于指定   随附的数据项目(或   一个整数或指针值)   发送          与信号,并具有以下类型:

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

这是在两个进程之间传递一小部分信息的一种非常方便的方法。我同意上面的用户 - 使用SIGUSR1或SIGUSR2和一个好的sigval,你可以传递你想要的任何东西。

您还可以通过sival_ptr将指针传递给共享内存中的某个对象,并以这种方式传递更大的对象。

答案 3 :(得分:-4)

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