2013-09-25 31 views
2

期間不允許對ios7執行shm_open調用,結果不允許操作我維護一個完美工作的iOS應用程序的共享內存部分,直到最新版本爲止。代碼不再允許我執行O_CREAT來初始化共享內存段。在O_CREAT(EPERM)

,似乎已經失去功能的代碼與此類似:

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:根據developer forums,IPC已在最新版本中癱瘓。已經提交了錯誤報告,因爲它也影響了進程內通信。希望這會得到解決,但同時我會尋找一種複製功能的方法。

+0

如果你告訴我們你需要共享內存段,人們可能會提出一個替代方案。 – JeremyP

+0

編輯該問題以提供更多信息。 – r0t0xd

回答

0

經過長時間的研究,我們放棄了挽回我們以前的IPC方法。我們的解決方法如下:

爲了在我們的應用程序套件之間共享信息,我們決定使用iOS Keychain。

爲了讓我們更容易,我們發現有人已經將所有的鑰匙串功能包裝在一個更容易使用的包裝中。here

只要應用程序具有相同的應用程序標識符,這就允許我們在應用程序之間發送數據。

不理想,但它爲我們完成了工作。

0

私有,命名爲UIPasteboard是一種替代方案。它比共享內存慢得多,但可能比鑰匙串更快。