Это на самом деле довольно сложно и зависит от платформы. На самом деле не может найти все подпроцессы, если они намеренно пытаются скрыть.
Если вы хотите просто убить порожденные процессы, есть много вариантов. Для тестового фреймворка я выбрал два:
1. процессы порождения с pgid => true
2. вставьте переменную MY_CUSTOM_COOKIE=asjdkahf
, затем найдите в окружении проки с этим cookie и уничтожьте его.
К вашему сведению, используя ps
, чтобы выяснить иерархию процессов, очень ненадежно. Если один из процессов в цепочке завершается, его подпроцессы получают родительский pid 1
(по крайней мере, в Linux). Так что не стоит реализовывать.