菜鸟教程小白 发表于 2022-12-13 15:07:09

ios - iOS 上的低级共享内存


                                            <p><p>我正在尝试在 iOS 上构建一 block 共享内存。它编译和链接,但是 <code>shmget()</code> 在最无辜的参数上抛出一个 SIGSYS 信号:</p>

<pre><code>NSString *p = [ pathForResource:@&#34;crash&#34; ofType: nil];
key_t tok = ftok(, 918273);
int mid = shmget(tok, 4096, IPC_CREAT|S_IRUSR|S_IWUSR);
</code></pre>

<p><code>tok</code> 是一个大的正整数,而不是 -1。大小——试了1024,效果一样。</p>

<p>iOS 是否支持 SysV 共享内存?头文件和库都存在,否则编译器/链接器会提示。相同的代码适用于模拟器。我做错了什么?</p>

<p>我的兴趣源于 <a href="https://stackoverflow.com/questions/11588474/quincykit-plcrashreporter-provide-description-before-the-crash" rel="noreferrer noopener nofollow">this question</a> .</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p><code>shm_open()/mmap()</code> 组合在模拟器和设备(在 iOS 4 上测试)上都如宣传的那样工作,无需任何明确的权限更改。</p>

<p>注意:<code>shm_open()</code> 被奇怪地记录为可变参数。实际上,您需要使用访问掩码指定第三个参数 - <code>S_IRUSR</code> 类标志的组合,或八进制 <code>chmod</code> 值。</p>

<p>编辑:看起来它在 iOS 7 中损坏了。即使指定了 O_CREAT 标志,shm_open 也会返回 -1 且 errno=2 (ENOENT)。</p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - iOS 上的低级共享内存,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/11589105/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/11589105/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - iOS 上的低级共享内存