У меня есть приложение на Linux, где я должен убить целое дерево процессов из приложения. Дерево процессов выглядит так:
app
└── parent
├── child1
├── child2
├── child3
├── child4
└── child5
Теперь у меня есть проблемы при уничтожении дерева процессов, убивая parent
Часто случается, что несколько подпроцессов не уничтожаются, когда я пытаюсь убить parent
процесс. После сигнала уничтожения дочерние процессы выглядят «отключенными», так как они находятся в дереве процессов не ниже исходного приложения. app
больше. Как это может случиться?
В целом, в системах POSIX неверно, что уничтожение родительского процесса также убивает его дочерний процесс.
Особенно если вы используете
kill -KILL
после убийства родительского процесса дочерний процесс стал сиротские процессы ,Вы можете убить весь группа процессов или поискать по родительскому pid перед тем как убить родительского. В оболочке это можно сделать с помощью:
В Python я бы предложил использовать psutil библиотека, особенно
Process.children
метод.источник