Sto lavorando a un progetto in cui ho un numero di PID e devo scoprire quali di questi sono processi zombi e poi uccidere i loro processi genitore per uccidere il processo iniziale di zombie. Non sono sicuro se c'è un modo per scoprire quale sia il PPID di un dato PID. Qualsiasi aiuto sarebbe apprezzato.Dato un PID figlio come si può ottenere il PID genitore
5
A
risposta
2
La funzione getppid() fa che:
#include <unistd.h>
int main()
{
pid_t ppid;
ppid = getppid();
return (0);
}
+2
Questo ovviamente otterrà solo il pid genitore del processo di chiamata. L'OP vuole farlo con processi arbitrari, alcuni dei quali possono essere zombi, quindi questo non affronta la questione. –
2
Alla sorgente per il comando ps, v'è una funzione chiamata get_proc_stats
definito proc/readproc.h
che (tra le altre cose) restituisce il genitore pid
di un dato pid
. È necessario installare libproc-dev
per ottenere questa funzione. È quindi possibile fare:
#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);
}
Questo è tratto da here. Non l'ho mai usato, ma secondo l'autore potrebbe essere utile.
Problemi correlati
- 1. Come ottenere il PID figlio in C?
- 2. ottenendo pid del processo figlio
- 3. Come uccidere un processo in Java, dato un PID specifico
- 4. Come ottenere il PID del rake corrente?
- 5. : riuso pid
- 6. PID per nuovo thread
- 7. Come posso stampare un PID in elisir?
- 8. L'apertura di un processo con Popen e ottenere il PID
- 9. Come posso ottenere il PID del processo genitore della mia applicazione
- 10. Erlang: ottenere il "nome registrato" associato a un `pid`
- 11. Come analizzare/proc/pid/cmdline
- 12. Determinare il pid del processo terminato
- 13. attendere processo figlio ma ottenere errore: 'pid non è figlio di questa shell'
- 14. ottiene PID da paramiko
- 15. Come ottenere il pid di comando in esecuzione con sudo
- 16. Ottieni il nome da PID?
- 17. Come ottenere PID e Port # per un processo Jenkins
- 18. ottenere pid di exec generato in phing
- 19. Ottenere ultimo processo PID in Makefile
- 20. Ottenere un pid di un processo creato in C#
- 21. Ottieni il nome del processo tramite PID
- 22. Android - Come ottenere processName o packageName usando PID?
- 23. In attesa di pid figlio Ruby per uscire
- 24. fork() processi figlio e genitore
- 25. log4j2: Includi PID
- 26. Ottenere il PID del processo in Shell Script
- 27. Uccidere un figlio biforcuto uccide il genitore?
- 28. Come riprendere il lavoro interrotto su un computer remoto dato pid?
- 29. Come identificare un dispositivo USB dato il suo VID e PID
- 30. Ottieni PID dell'applicazione attualmente eseguita
Possibile duplicato di [linux: genera automaticamente il padre pid di un altro processo?] (Http://stackoverflow.com/questions/1525605/linux-programmatically-get-parent-pid-of-another-process) –
C'è ' get_proc_stats' in 'libproc' che avrebbe fatto ciò che volevi. Sembra che sia stato rimosso dall'interfaccia pubblica. L'alternativa è usare 'openproc' e' readproc' per ottenere il pid. Pubblicheremo una risposta ma non riesco a farlo funzionare (crash in 'readproc'). Non so quale sistema operativo stai usando, quindi potrebbe non essere applicabile. Ulteriore lettura [qui] (http://stackoverflow.com/questions/6457682/how-to-programatically-get-uid-from-pid-in-osx-using-c), [qui] (http: // goo .gl/W2BBRy) e [qui] (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=731959). –
La risposta migliore dipende probabilmente dai sistemi operativi a cui si sta indirizzando. Per Linux, c'è il filesystem '/ proc'; su BSD, dovrai chiamare 'sysctl()'. Non so altri sistemi ... –