首页 > 解决方案 > 如何将自定义事件/信号从一个进程发送到 MacOS 中的另一个进程

问题描述

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

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

标签: c++macosqt

解决方案


MacOS 基本上是 UNIX。

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

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

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


推荐阅读