7

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

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

4

4 回答 4

12
#include <sys/types.h>
#include <signal.h>
int kill(pid_t pid, int sig);
于 2009-03-12T09:38:48.860 回答
5

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

于 2009-03-12T09:37:42.090 回答
1

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

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

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

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

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

于 2009-03-13T06:59:34.417 回答
-4
system("kill -2 `pidof <app_name_here>` ");
于 2009-03-12T11:26:29.053 回答