我维护了一个 iOS 应用程序的共享内存部分,该部分在最新版本之前一直运行良好。该代码不再允许我执行 O_CREAT 来初始化共享内存段。
似乎失去功能的代码与此类似:
int shm_fd;
if ((shm_fd = shm_open(SHM_PATH, O_RDWR|O_CREAT, S_IRWXU|S_IRWXG|S_IRWXO)) < 0){
/** Handle failure */
} else {
/** Handle Success */
}
这个代码片段直到最近都很好用。现在它失败了,将 errno 设置为 EPERM。
如果它有帮助,它仍然可以在模拟器中完美运行。
其他人也失去了这种能力吗?有什么办法可以解决这个问题?
编辑 1:如果认为不可能使用我的旧方法,我想知道我能做些什么来模拟相同的功能。它是多个应用程序之间共享数据的来源。所有知道它的应用程序都可以查看和修改数据。
编辑 2:根据开发者论坛,IPC 在最新版本中已被削弱。已提交错误报告,因为它也会影响进程内通信。希望这将得到修复,但与此同时,我将寻找一种复制功能的方法。