从动态加载到沙盒 macOS 进程的插件中使用 IPC 套接字

问题描述

我们在 AU 音频插件中使用 nng IPC(基本上是 UNIX 域套接字),该插件可以在运行时由主机应用程序动态加载——AU 插件基本上是一个动态库。我们使用此 IPC 连接在用户加载的插件的多个实例之间进行通信,并与系统上运行的单独后台进程进行通信。

虽然这在一般情况下工作正常,但当主机应用程序被沙箱化时会失败,例如苹果车库乐队。所有 Apple AU 主机都允许文件访问 ~/Music 和一般网络访问(我们可以成功访问我们的许可服务器)。在 ~/Music 中创建一个子目录并将文件写入它可以工作,还可以通过插件内的 stat 查询该目录的权限显示 755。但是对 nng_listen调用指定了一个像 { {1}} 返回 ipc:///Users/me/Music/subdir/foo.ipc(例如权限被拒绝),并且在控制台应用程序中我看到类似 NNG_EPERM通知

我最初认为,由于 IPC 通过 UNIX 域套接字工作最终基于文件,因此选择具有适当文件访问权限的路径足以使其工作,但情况似乎并非如此。那么,是否有任何选项可以让 IPC 套接字在运行时加载的插件中工作,或者这完全是关于 Apple 在其应用程序上设置的权利,我们需要一种完全不同的方法?如果是这样,您会推荐什么(希望是 Win/macOS 跨平台)方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...