2
我寫了一個應用程序在C中,我正在使用NDK移植到Android。此應用程序使用fork()定期創建子進程以執行一些任務。這些子進程通過管道與主進程通信,然後在任務完成後退出。通過管道傳輸的數據量可能是數百千字節。移植使用fork()到Android的C代碼
我試圖保持父進程非常精簡的內存和CPU消耗,也非常穩定,但子進程有時會佔用大量的資源。如果兒童進程有時因系統而被系統殺死,那並不重要。父進程可以優雅地處理這些情況。
對於這個用例,將fork()保留在本機代碼中可以嗎?有沒有更好的方式通過Android的框架來做到這一點?
謝謝。從女神
您引用的文章似乎指的是分叉進程並期望有兩個活動在運行之後,在我知道的任何平臺上是不可能的。這裏的問題是指分叉後臺進程。 – wolfgang
我*確實*認同這樣的觀點,即它是危險的,而失控的過程是一件壞事。我不知道如果GUI活動退出但無法終止其後臺進程會發生什麼情況。 – wolfgang
是的,我打算分叉進程並在子進程中執行一些CPU和內存密集型任務,這些子進程只在後臺執行C代碼。他們使用管道與主進程通信,當主進程死亡時,它們可以在接收到SIGPIPE信號時終止。我想這樣做的原因是因爲我希望Android系統可以自由地殺死子進程,以防它使用太多資源,但主進程不應該被終止。對這種情況也不鼓勵嗎? – user1093297