我的目标:我想将一个信号(int-type变量)传递给另一个正在运行的控制台程序。
我的想法:将数据写入磁盘,并通过其他控制台程序读取数据。
可能存在缺陷:太慢,效率不高。
是否能够将“(自定义/ int-type)信号”传递给另一个控制台程序?
任何建议(或更好的解决方法)都将受到赞赏。
答案 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'