问题描述
我们在 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 (将#修改为@)