2016-11-29 2 views
1

Ich arbeite derzeit an einem Programm, das die Speicherauslastung der Hierarchie eines bestimmten Prozesses in Linux verfolgt. Während es möglich ist, die Eltern-ID recht einfach zu finden, ist es schwierig, die Kinder dieses bestimmten Prozesses zu finden. Gibt es eine Möglichkeit, alle Kinder eines Prozesses und ihrer Kinder usw. zu finden, ohne auf Shell-Skripte zurückgreifen zu müssen?Durchlaufen der Prozesshierarchie eines Prozesses in C

+0

Ich kenne keine * C * Möglichkeit, es zu tun. Sie müssen die Ausgabe des Befehls "ps" verarbeiten oder den Ordner "/ proc" durchsuchen, um eine Liste aller aktiven Prozesse mit ihrer ID und ihrer übergeordneten ID zu erhalten und die Struktur von dort wieder aufzubauen. Und hüte dich vor Rennbedingungen wie Prozessbeginn oder -ende während dieser Operation ... –

Antwort

1

Die Prozesshierarchie ist umgekehrt - Kinder verfolgen ihre Eltern. Sie müssten die gesamte /proc durchlaufen, um die Eltern jedes Prozesses zu überprüfen. Dies ist, was all diese Tools implementieren:

Alternativ, wenn Sie den Prozess von Anfang an überwachen kann, beispielsweise wie strace tut, dann könnten Sie alle Systemaufrufe fork/clone verfolgen und die zurückgegebene untergeordnete PID aufzeichnen.

Verwandte Themen