firemail
标题: Mac OS X相当于CreateEvent()与命名对象进行进程间通信? [打印本页]
作者: Qter 时间: 2022-4-7 11:29
标题: Mac OS X相当于CreateEvent()与命名对象进行进程间通信?
我正在寻找Mac OS X上最简单或最合适的方式来简单地"发信号"或通知另一个进程.来自Windows背景,可以使用以下内容实现.
在流程A中:
// create named eventhCreatedEvent = CreateEvent(NULL, TRUE, FALSE, "MyUniqueNamedEvent");// wait for it to be signalledWaitForSingleObject(hCreatedEvent, INFINITE);然后在流程B中:
// open the existing named eventhOpenedEvent = OpenEvent(EVENT_ALL_ACCESS, FALSE, "MyUniqueNamedEvent");// signal itSetEvent(hOpenedEvent);因此,当SetEvent执行进程B中的调用时,进程A将突破WaitForSingleObject并执行一些工作.
我不需要实际发送任何数据,所以我排除了命名管道(FIFO)或套接字等等有点矫枉过正(我已经看过这个类似的问题,但是因为他们需要发送数据,我的问题略有不同).同样,我不会知道其他进程的PID(这就是为什么我需要某种共享对象)所以我不能使用任何需要它的东西. 到目前为止,我的候选名单是:
- POSIX信号量-使用sem_open,sem_wait并sem_post创建/打开,等待和信号分别事件.看起来相当直接使用.
- BSD notify(3)功能 - 使用起来相当简单,如果不是有点笨拙消费通知.
- 这些NSDistributedNotificationCenter或者CFNotificationCenter功能 - 看起来是最像"Mac喜欢"的做事方式而且相当简单.但是,我的代码可能需要作为dylib运行,根据这个未解决的问题,这可能对我不起作用.
那么,有没有人有任何建议/提示/恐怖故事使用上述任何一种,或者甚至更合适的替代品我没有想到实现我想要的?
https://qa.1r1g.com/sf/ask/622066651/
欢迎光临 firemail (http://firemail.wang:8088/) |
Powered by Discuz! X3 |