Pracuję nad projektem, w którym mam wiele PIDów i muszę dowiedzieć się, które z nich są procesami zombie, a następnie zabić ich procesy macierzyste w celu zabicia początkowy proces zombie. Nie jestem pewien, czy istnieje jakiś sposób, aby dowiedzieć się, jaki jest PPID danego PID. Każda pomoc będzie doceniona.Biorąc pod uwagę PID dziecka, jak uzyskać rodzic PID
5
A
Odpowiedz
2
Funkcja getppid() robi:
#include <unistd.h>
int main()
{
pid_t ppid;
ppid = getppid();
return (0);
}
+2
Oczywiście otrzyma to tylko pid rodzica procesu wywołującego. OP chce to zrobić z arbitralnymi procesami, z których niektóre mogą być zombie, więc to nie rozwiązuje problemu. –
2
Na źródło polecenia ps, jest funkcja o nazwie get_proc_stats
zdefiniowane w proc/readproc.h
że (między innymi) zwraca rodzica pid
danego pid
. Aby uzyskać tę funkcję, musisz zainstalować program libproc-dev
. Możesz następnie wykonać:
#include <proc/readproc.h>
void printppid(pid_t pid) {
proc_t process_info;
get_proc_stats(pid, &process_info);
printf("Parent of pid=%d is pid=%d\n", pid, process_info.ppid);
}
Zostało to zrobione z here. Nigdy nie użyłem tego, ale według autora może to być pomocne.
Powiązane problemy
- 1. Jak zabić proces w Javie, biorąc pod uwagę konkretny PID
- 2. Jak uzyskać PID dziecka w C?
- 3. Jak uzyskać pid polecenia działającego z sudo
- 4. Jak parsować/proc/pid/cmdline
- 5. Symfony2: Jak zweryfikować jednostkę, biorąc pod uwagę aktualnie zalogowanego użytkownika?
- 6. Jak zrobić LIKE biorąc pod uwagę dwie kolumny?
- 7. Recykling PID Linuksa
- 8. Określanie pid zakończonego procesu
- 9. Jak zrozumieć "/ proc/[pid]/stack"?
- 10. pid aktualnie wykonywanego procesu
- 11. Nginx Nieprawidłowy numer PID
- 12. Znaczenie PID, PPID i TGID
- 13. Excel VBA: Jak rozszerzyć zakres Biorąc pod uwagę bieżący Wybór
- 14. Jak przekonwertować HttpRequestBase na HttpRequestMessage, biorąc pod uwagę nazwy nagłówków?
- 15. Biorąc pod uwagę nazwę akcji htmlHelper +, jak określić nazwę kontrolera?
- 16. Jak renderować płynną ścieżkę, biorąc pod uwagę zestaw punktów danych?
- 17. Jak wybrać tekst RichTextBox, biorąc pod uwagę indeks i długość
- 18. Pobierz PID aktualnie uruchomionej aplikacji
- 19. jQuery: Biorąc pod uwagę selektor, znajdź tylko jego widoczne elementy.
- 20. Eliksir - Uzyskaj wszystkie PID dla procesów pod nadzorem
- 21. Jak znaleźć nazwę aplikacji przez PID (identyfikator procesu)
- 22. Otrzymasz aktualną datę, biorąc pod uwagę strefę czasową w PHP?
- 23. Uzyskaj identyfikator PID usługi Windows pod nazwą usługi
- 24. Jak mogę wydrukować PID w Elixir?
- 25. Jak zdobyć PID bieżącego zadania rake?
- 26. Jak uzyskać pid z aktualnie debugowanego procesu w gdb?
- 27. Jak uzyskać szczegółowe informacje o procesie z jego pid
- 28. Jak uzyskać PID procesu właśnie rozpoczęty z wewnątrz pliku wsadowego?
- 29. Konwersja RGB do RGBA biorąc pod uwagę tło
- 30. Pierwsze wiersza i kolumny trójkątnej Matrix, biorąc pod uwagę Index
Prawdopodobny duplikat [linux: programowo uzyskaj macierzysty pid innego procesu?] (Http://stackoverflow.com/questions/1525605/linux-programmatically-get-parent-pid-of-another-process) –
Istnieje ' get_proc_stats' w 'libproc', który zrobiłby to, co chcesz. Wygląda na to, że został usunięty z interfejsu publicznego. Alternatywą jest użycie 'openproc' i' readproc' do pobrania pid. Wpisuję odpowiedź, ale nie mogę sam tego zrobić (crash w 'readproc'). Nie wiem, którego używasz, więc może nie mieć zastosowania. Więcej informacji [tutaj] (http://stackoverflow.com/questions/6457682/how-to-programatically-get-uid-from-pid-in-osx-using-c), [tutaj] (http: // goo .gl/W2BBRy) i [tutaj] (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=731959). –
Najlepsza odpowiedź jest prawdopodobnie zależna od systemu operacyjnego, na który kierujesz reklamy. Dla systemu Linux istnieje system plików '/ proc'; na BSD, musisz wywołać 'sysctl()'. Nie wiem o innych systemach ... –