2016-04-16 13 views
1

Während ich versuche, alle Wurzeln von bestimmten Prozessanwendung in C gefunden, und ruft einen benutzerdefinierten Systemaufruf ich gemacht, dass ein Array aller Prozess mit task_struct * s zurückgibt, erfuhr ich, dass die Aufgabe Swapper/0 ist Aufgabe, die durch den Elternzeiger auf sich selbst zeigt (zB swapper/0-> parent == swaper/0). Meine Frage ist: Welches ist der wahre GRAND Parent eines Prozesses, der im Userspace läuft? ist es Swapper/0 oder die Aufgabe direkt davor (oder Swapper/0 Kind)? I.e. ist Swapper/0 eine echte Aufgabe oder nur ein End-Flag zum Durchlaufen der Eltern verknüpften Listen?Was ist der wahre GRAND Ahnenprozess im Linux Kernel?

Btw, diese Frage erweitert die Frage von mir in diesem Post geschrieben: 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

Jetzt habe ich, dass Swapper/0 ist Teil des Systems mit der Post, die Sie mir gaben, aber sollte ich darüber nachdenken es als die Wurzel aller Eltern in diesem Fall? – falhumai

+0

Mein Verständnis (das möglicherweise nicht genau ist) ist, dass Swapper/0 eine Reihe von Kernel-Threads besitzt und init/1 die Benutzerprozesse besitzt. –

Antwort

4

init (pid 1) ist der Prozess, der der Vorgänger aller anderen Benutzerprozesse ist. Init ist verantwortlich für das Starten aller Prozesse auf Benutzerebene, auf denen das System ausgeführt wird. Außerdem wird ein Prozess, dessen Eltern-Exits von init geerbt werden (d. H. Init wird zu seinem Elternteil).