我有一個Android本機服務器應用程序編譯爲平臺特權模塊,分叉自己。該模塊還使用Android服務,如SurfaceFlinger。我需要爲每個客戶端分派一個沙盒進程。Android本機代碼fork()與IPC/Binder存在問題
叉()工作正常,父進程沒有問題。但在子過程中,當我嘗試訪問任何Android服務/資源獲取:
信號11(SIGSEGV),碼2(SEGV_ACCERR),故障地址XXXXXXXX ......
/系統/lib/libbinder.so(機器人::地塊:: ipcSetDataReference
...
/system/lib/libbinder.so(機器人:: BpBinder ::交易
NativeCrashListener(1203):找不到ProcessRecord爲pid XXXX
- 即使在我嘗試創建新客戶端時也會發生這種情況,因此不使用任何以前創建的引用。
- NativeCrashListener不知道我的子進程,因此,也許ActivityManager也不知道。
我看着Zygote代碼,但沒有在這裏找到有用的東西。我可能會錯過某個步驟或在子進程上調用某個函數。有任何想法嗎 ??? =)
您是否認爲嘗試做同樣的事情是可行的?停止並重新啓動線程,或按照Digit建議的其他方法進行操作? – Bruno 2014-10-13 17:47:49
您將無法停止並重新啓動進程中的所有線程。按照數字的解決方案。 – fadden 2014-10-13 22:04:46