如何将自定义事件/信号从一个进程发送到 MacOS 中的另一个进程

Posted

技术标签:

【中文标题】如何将自定义事件/信号从一个进程发送到 MacOS 中的另一个进程【英文标题】:How to send a custom event/signal from on process to another process in MacOS 【发布时间】:2021-12-15 15:45:21 【问题描述】:

我有两个 MacOS 应用程序都是由 QT (c++) 编写的。 B 应用程序处理一些数据并将结果存储在文件或共享内存中,一旦完成,应用程序A 将使用此结果并继续前进。

我的问题是当B完成数据处理后,如何通知A?一种愚蠢的方法是让 A 不断检查输出文件或共享内存。但实际上我想要更优雅的解决方案,在 Windows 中,我可以使用 SendMessage 之类的系统 API 向 A 发布自定义消息,并且 A 会覆盖 QT 函数 nativeEvent 处理消息并走得更远。但我不知道如何在 MacOS 中做到这一点,有没有 QT/C++ 解决方案?谢谢!

【问题讨论】:

【参考方案1】:

MacOS 基本上是 UNIX。

方法一:如果你有PID,你可以发送信号。

https://www.tutorialspoint.com/cplusplus/cpp_signal_handling.htm

方法二:建立socket连接。这大概就是我会做的。我会在程序 B 中嵌入一个 REST 服务器,并让程序 A 发送一个 REST 调用。

【讨论】:

以上是关于如何将自定义事件/信号从一个进程发送到 MacOS 中的另一个进程的主要内容,如果未能解决你的问题,请参考以下文章

将自定义事件表单从一页发送到另一页

如何将自定义日志转发到 Azure Sentinel

如何从一个进程向多个其他进程发出信号?

将自定义 UIKit 事件从自定义 UIKit 控件公开到 SwiftUI

fork 和 signal:如何将信号从父进程发送到特定的子进程

如何将自定义标头从 mvc 项目发送到 Web api 项目?