c++ - 如何将自定义事件/信号从一个进程发送到 MacOS 中的另一个进程
问题描述
我有两个 MacOS 应用程序都是由 QT (c++) 编写的。应用程序B处理一些数据并将结果存储在文件或共享内存中,一旦完成,应用程序A将使用此结果并继续前进。
我的问题是当B完成数据处理时,它如何通知A?一种愚蠢的方法是让A不断检查输出文件或共享内存。但我实际上想要更优雅的解决方案,在 Windows 中,我可以使用 SendMessage 之类的系统 API 向A发布自定义消息,并且A覆盖 QT 函数nativeEvent来处理消息并走得更远。但我不知道如何在 MacOS 中做到这一点,有没有 QT/C++ 解决方案?谢谢!
解决方案
MacOS 基本上是 UNIX。
方法一:如果你有PID,你可以发送信号。
https://www.tutorialspoint.com/cplusplus/cpp_signal_handling.htm
方法二:建立socket连接。这大概就是我会做的。我在程序 B 中嵌入了一个 REST 服务器,并让程序 A 发送一个 REST 调用。
推荐阅读
- amazon-ec2 - 如何在 AWS 服务器上设置 sidekiq 以执行后台作业并使用 Capistrano 重新启动 Sidekiq
- swift - Swift 中的 inout 参数
- docker - 运行使用 Apple M1 芯片(基于 ARM 的系统)构建的容器时出现“exec 格式错误”
- flutter - 如何在颤动中配置容器以使用同一行或列中其他子项的相同高度
- javascript - 从时间戳中减去天数不适用于 MongoDB
- powerbi - 如何分析包含多个值的列的数据
- python - 如何在 pyspark rdd 映射中传递不可序列化的对象?
- javascript - 获取不带方括号的数组内的值
- kubernetes - Nginx 入口忽略 ConfigMap 和注解
- javascript - 如何在补间完成之前禁用代码执行?