2016-04-16 39 views
1

在嘗試查找C中創建的某個進程應用程序的所有根,並調用一個自定義系統調用時,我做出了使用task_struct *的信息返回所有進程的數組,我經歷了任務swapper/0通過父指針指向自己的任務(即swapper/0-> parent == swaper/0)。我的問題是:哪一個是用戶空間中運行的任何進程的真正的Grand GRAND父級?它是swapper/0還是它之前的任務(或swapper/0的孩子)?即是交換/ 0是爲了一個真正的任務,或只是一個遍歷父鏈接列表的結束標誌?什麼是Linux內核中真正的Grand GRAND祖先進程?

順便說一句,這個問題擴展了我在這篇文章中發佈的問題:The ending flag to traversing ancestors in the kernel space in C

+1

http://unix.stackexchange.com/questions/83322/which-process-haspid10- –

+0

現在我得到了這個交換器/ 0是系統的一部分,使用您給我的帖子,但我應該考慮它作爲這種情況下所有父母的根源? – falhumai

+0

我的理解(可能不準確)是swapper/0擁有一組內核線程,並且init/1擁有用戶進程。 –

回答

4

init(pid 1)是所有其他用戶進程的祖先的進程。 init負責啓動運行系統的所有用戶級進程。此外,其父進程退出的進程由init繼承(即init成爲它的父進程)。

相關問題