如何解决从动态加载到沙盒 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 举报,一经查实,本站将立刻删除。