Я работаю над проектом, где у меня есть несколько PID, и я должен выяснить, какие из них являются зомби-процессами, а затем убить их родительские процессы, чтобы убить начальный процесс зомби. Я не уверен, есть ли способ узнать, что такое идентификатор PPID данного PID. Любая помощь будет оценена по достоинству.Учитывая дочерний PID, как вы можете получить родительский PID
5
A
ответ
2
Функция getppid() делает это:
#include <unistd.h>
int main()
{
pid_t ppid;
ppid = getppid();
return (0);
}
+2
Это, очевидно, приведет только к родительскому pid вызывающего процесса. OP хочет сделать это с помощью произвольных процессов, некоторые из которых могут быть зомби, поэтому это не затрагивает вопрос. –
2
В источнике для команды пса, есть функция называется get_proc_stats
определен в proc/readproc.h
, что (помимо всего прочего) возвращает родительский pid
данного pid
. Чтобы получить эту функцию, вам необходимо установить libproc-dev
. Затем вы можете:
#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);
}
Это взято из here. Я никогда не использовал это, но, согласно автору, это может быть полезно.
Смежные вопросы
- 1. Erlang Получить $ name Учитывая Pid
- 2. Почему родительский и дочерний pid показаны
- 3. Как получить дочерний PID в C?
- 4. Извлечь родительский pid
- 5. Как получить PID фотографии?
- 6. Учитывая PPID, как найти все связанные PID?
- 7. linux: программно получить родительский pid другого процесса?
- 8. Получить PID себя (супервизор)
- 9. Как «pid = fork();» назначает «pid = 0» в дочернем процессе?
- 10. Как получить PID потока?
- 11. Как получить pid процесса?
- 12. Проверьте, ожидает ли дочерний PID скана
- 13. Ребенок и родительский pid с fork();
- 14. Как получить ошибки от PID?
- 15. Как найти pid сиротного процесса
- 16. Как вы можете показать родительский процесс PID дочернего элемента вместо переменной значения?
- 17. waitpid возвращает pid = 0 и WIFEXITED = 1 как получить pid?
- 18. PID Vs PID (2 DOF)
- 19. Как получить родительский PID приложения java, выполняющегося в настоящее время
- 20. Получить PID нового процесса
- 21. Получить PID исполняемого приложения
- 22. Получить PID вставленной строки
- 23. Получить имя процесса pid
- 24. Получить информацию о PID
- 25. получить PID от paramiko
- 26. Как получить PID фонового процесса?
- 27. Как получить pid определенного процесса
- 28. Как получить PID awesome-wm
- 29. Переназначение Parent PID
- 30. PID нескольких детей отделилась тот же родительский
Возможный дубликат [linux: программно получить родительский pid другого процесса?] (Http://stackoverflow.com/questions/1525605/linux-programmatically-get-parent-pid-of-another-process) –
Есть ' get_proc_stats' в 'libproc', который сделал бы то, что вы хотите. Кажется, он был удален из открытого интерфейса. Альтернативой является использование 'openproc' и' readproc' для получения pid. Я бы опубликовал ответ, но я не могу заставить его работать сам (авария в 'readproc'). Я не знаю, какие ОС вы используете, поэтому не может применяться. Дальнейшее чтение [здесь] (http://stackoverflow.com/questions/6457682/how-to-programatically-get-uid-from-pid-in-osx-using-c), [здесь] (http: // goo .gl/W2BBRy) и [здесь] (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=731959). –
Лучший ответ, вероятно, зависит от того, какие ОС вы нацеливаете. Для Linux существует файловая система '/ proc'; на BSD вам нужно будет вызвать 'sysctl()'. Я не знаю о других системах ... –