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
1
A
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:
- How can I recursively get all child process for a given pid?
- How to get child process from parent process?
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
- 1. Überwachung der Netzwerknutzung eines Prozesses?
- 2. Mainwindowhandle eines Prozesses in C# Erste
- 3. Erkennung der CPU-Architektur eines bestimmten Prozesses in C#
- 4. Ermitteln der Architektur eines Prozesses
- 5. C# Arbeitsverzeichnis eines anderen Prozesses abrufen
- 6. Steuerung der Ausführung eines anderen Prozesses durch C#
- 7. C#: Redirect Standardausgabe eines Prozesses, der bereits ausgeführt wird
- 8. Speichernutzung eines untergeordneten Prozesses?
- 9. Überwachen eines Prozesses in Windows
- 10. Bestimmung der Befehlsgröße eines Prozesses/eines Funktionsaufrufs in Linux
- 11. Synchronous lesen stdout eines Prozesses
- 12. Überwachung eines Remote-Prozesses
- 13. Starten eines separaten Prozesses
- 14. Entfernen eines Zombie-Prozesses
- 15. C# Die Speicheradresse eines bestimmten Strings eines anderen Prozesses finden
- 16. Speicherauszug eines Prozesses
- 17. Wie liest man Befehlszeilenargumente eines anderen Prozesses in C#?
- 18. Elegantes frühes Beenden eines erstellten ffmpeg-Prozesses in C
- 19. Möglicher Identitätswechsel beim Starten eines Nicht-Exe-Prozesses in C#?
- 20. Begrenzung der Netzwerkbandbreite eines Java-Prozesses
- 21. Schrumpft der virtuelle Speicher eines Prozesses jemals?
- 22. Beenden eines unendlichen Prozesses in Python subprocess
- 23. Ausgabe eines Prozesses nicht gedruckt
- 24. Debuggen eines Prozesses in einer VM
- 25. cmake: Tests erfolgreich durchlaufen einen Teil des Build-Prozesses
- 26. TypeScript, Durchlaufen eines Wörterbuchs
- 27. Ausgabe eines Prozesses zur Laufzeit
- 28. Identifizieren von Operationen eines Prozesses
- 29. durchlaufen ein Array in C
- 30. Lesen von Befehlszeilenargumenten eines anderen Prozesses (Win32-C-Code)
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 ... –