我试图构建iOS上的共享内存块。 它编译和链接,但shmget()
上最无辜的参数抛出一个SIGSYS信号:
NSString *p = [[NSBundle mainBundle] pathForResource:@"crash" ofType: nil];
key_t tok = ftok([p UTF8String], 918273);
int mid = shmget(tok, 4096, IPC_CREAT|S_IRUSR|S_IWUSR);
tok
是一个大的正整数,而不是-1。 尺寸 - 试1024,同样的效果。
是的SysV共享内存甚至支持iOS? 页眉和库都存在,或编译器/链接会抱怨。 相同的代码工作在模拟器上。 我究竟做错了什么?
我的兴趣源于这个问题 。
所述shm_open()/mmap()
组合工作作为通告的,无论在模拟器和设备(在iOS 4测试)没有任何明确许可的变化。
注: shm_open()
的古怪记录为可变参数。 在现实中,你需要指定与访问掩码第三个参数-组合S_IRUSR
般的标志,或一个八进制chmod
的价值。
编辑:看起来像它在iOS的7的shm_open返回-1,即使指定O_CREAT标志错误号= 2(ENOENT)爆发。
在iOS上不能使用的所有共享内存我不知道确切的细节,但我确实知道,一)其安全性和b)的沙盒环境的一部分
所以,我从我自己知道上面和我的越狱场面然而这里存在是描述沙盒几个环节以及它们如何影响共享内存
http://www.trailofbits.com/resources/ios4_security_evaluation_paper.pdf
http://lists.apple.com/archives/cocoa-dev/2012/Apr/msg00535.html