是否可以将“信号”传递给另一个控制台程序?

时间:2013-12-27 16:13:03

标签: c windows gcc

我的目标:我想将一个信号(int-type变量)传递给另一个正在运行的控制台程序。

我的想法:将数据写入磁盘,并通过其他控制台程序读取数据。

可能存在缺陷:太慢,效率不高。

是否能够将“(自定义/ int-type)信号”传递给另一个控制台程序?

任何建议(或更好的解决方法)都将受到赞赏。

3 个答案:

答案 0 :(得分:2)

...是

选项1:使用SendMessage()将消息发送到其他进程的消息队列。 (可能不合适,因为你说你有一个控制台程序,它可能没有消息队列。)

选项2:使用named shared memory

选项3:在两个流程之间使用a named pipe

选项4:在两个流程之间使用a UDP or TCP network connection

选项1是最简单/最简单的,但要求目标进程有一个正在运行的消息队列来接收和处理消息。

答案 1 :(得分:0)

这取决于您实际想要在所涉及的流程之间传递的内容。如果你需要做的就是通知另一个进程,那个事情已经发生了(另一个进程有办法在收到通知后立即了解详细信息),那么named event可能就是你所需要的。

如果您需要分享更多信息,请考虑shared memory and mapped files

当然,您也可以考虑沿着COM路线走下去。为进程定义一个接口,该接口应该接收“signal”并让它在global object table中注册一个对象。发送过程可以从对象表中获取实例,并使用该接口来执行通知。

可能还有无数其他方式。

答案 2 :(得分:0)

我认为我们也可以使用kill将任何信号传递给linux中的任何应用程序。请参阅'man kill',例如将SIGKILL发送给keil,我们可以编写像..

kill -9 keil

通过使用kill -l,我们可以看到所有信号及其各自的数字。并将它们传递给'kill -n app_name'