я являюсь новым в человечности. Я создаю программу с, открывает 2/4/8 новый процесс в отдельных терминалах. Используя систему (). Как я могу получить PID их или изменить хорошее значение, с помощью другого терминала?
Обычно pidof(8)
и в более сложных случаях pgrep(1)
превосходные инструменты должны найти идентификатор некоторых процессов.
Если Вы хотите найти всех детей конкретного процесса, необходимо вырыть через /proc
файловая система самостоятельно. Давайте предположим поиск детей процесса 2345:
for PROCSTAT in /proc/[0-9]*/stat; do
read -r PID PROCNAME STATUS PPID TAIL < $PROCSTAT
if [ $PPID -eq 2345 ]; then
echo $PID
fi
done
Если Вы принимаете решение использовать
system("foobar");
вместо
if (fork() == 0) {
execlp("foobar", "foobar", NULL);
}
это на самом деле породит два процесса: /bin/sh
как прямой ребенок и foobar
как внук.