2016-04-16 24 views
1

Cで作成された特定のプロセスアプリケーションのすべてのルールを見つけようとしていて、task_struct *の情報を使ってすべてのプロセスの配列を返すカスタムシステムコールを呼び出すと、swapper/0タスクが親ポインタ(すなわち、swapper/0-> parent == swaper/0)を介して自身を指し示すタスク。私の質問は次のとおりです。ユーザー空間で実行されているプロセスのGRANDの本当の親はどちらですか?それはswapper/0か、その直前のタスク(またはswapper/0の子)ですか?私。 swapper/0は実際のタスクを意味するか、親リンクリストをトラバースするための終了フラグだけですか?Linuxカーネルで実際のGRAND祖先プロセスとは何ですか?

Btw、この質問は、この記事で私が投稿した質問を拡大します:The ending flag to traversing ancestors in the kernel space in C

+1

http://unix.stackexchange.com/questions/83322/which-process-has-pid-0 –

+0

今私はswapper/0はあなたが私に与えた投稿を使ってシステムの一部ですが、この場合のすべての親の根としてですか? – falhumai

+0

swapper/0はカーネルスレッドのセットを所有しており、init/1はユーザープロセスを所有していると理解しています(正確ではないかもしれません)。 –

答えて

4

init(pid 1)は、他のすべてのユーザープロセスの祖先であるプロセスです。 initは、システムを実行するすべてのユーザーレベルのプロセスの起動を担当します。さらに、親出口がinitによって継承される(すなわち、initが親になる)プロセス。

関連する問題