Frage

Ich bin derzeit in einer Betriebssysteme Klasse und mein Lehrer die Hälfte der Klasse Zeit verbrachte über PIDs sprechen. Sie erwähnte, wie viele wissen, dass die Prozesse der Eltern-ID kennen.

Meine Frage lautet:

Hat PCB eines Prozesses seine Kinder-ID wissen? Wenn ja, was ist der Weg zu gehen darüber es zu erhalten?

War es hilfreich?

Lösung

Soweit ich weiß, ein Prozess nicht über eine explizite Liste seiner Kinder PIDs, aber es kann leicht gebaut werden, da sollte ein Prozess wissen, welches Kind verarbeitet es laicht. Zum Beispiel gibt den UNIX fork () Aufruf das Kind PID in dem übergeordneten Prozess und 0 im Kindprozess, Createprocess () auf Windows zurückkehrt (IIRC) die PID des neuen Prozesses erstellt.

Andere Tipps

Wenn Sie fork() auf * nichts zu verwenden, ist der Rückgabewert die PID des Kindes in dem übergeordneten Prozess, und 0 im Kindprozess. Das ist ein Weg, um herauszufinden.

Nicht sicher, ob sie den Überblick über die „Baum“ von Prozesslaich halten, ich denke, es hängt davon ab, welche OS Sie verwenden, aber da, wenn Sie bash (oder jede Shell) töten, werden alle laufenden Kinder auch getötet werden, ich denke, UNIX wie Systeme tun verfolgen diese halten.

Wenn Sie Linux oder etwas verwenden, die den Unix-APIs implementiert, wenn ein Prozess ruft fork () einen untergeordneten Prozess zu schaffen, die Eltern das Kind PID als Rückgabecode empfangen, oder -1, wenn die Gabel schlägt fehl. Das Kind Prozess erhält eine Null Return-Code.

Prozess PCB wissen ID seine Kinder.

Als wir die fork () wissen verwendet wird processes.It zu erstellen hat keine Argumente und gibt einen Prozess ID.After ein neuer Kind-Prozess sowohl Eltern und Kind erstellt wird, um die nächste Anweisung nach der Gabel wird execute (). Dort müssen wir die Eltern von dem child.This unterscheiden können durch Testen des Rückgabewertes von fork () durchgeführt werden.

Wenn fork () einen negativen Wert zurückgibt, ist die Schaffung von Kind-Prozess nicht erfolgreich. Wenn Fork () gibt eine Null in den neu untergeordneten Prozess erstellt. Wenn Fork () einen positiven Wert als Prozess-ID des untergeordneten Prozesses zu dem übergeordneten Prozess.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top