Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1136|回复: 0
打印 上一主题 下一主题

Mac OS X相当于CreateEvent()与命名对象进行进程间通信?

[复制链接]

1228

主题

1997

帖子

7578

积分

认证用户组

Rank: 5Rank: 5

积分
7578
跳转到指定楼层
楼主
发表于 2022-4-7 11:29:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我正在寻找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/

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-4-29 06:57 , Processed in 0.054182 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表