Вам не нужно убивать их.
Чтобы построить некоторое базовое понимание:
Каждый процесс является дочерним по отношению к родительскому процессу (за исключением процесса init, но нам не нужно об этом беспокоиться).
Когда дочерний процесс завершает выполнение, он может по-прежнему содержать данные, к которым родительский процесс хочет получить доступ, обычно это код выхода, который описывает результат дочернего процесса (удалось ли это? Это ошибка? Какой был код ошибки?).
Законченный дочерний процесс висит в таблице процессов как процесс зомби, пока родительский процесс не "пожнет" или не ждет дочернего процесса, который просто является родительским процессом, сообщающим ОС, что ему больше не нужен этот дочерний процесс; Он прочитал все возвращаемые значения, которые он хочет, и сделал с этим. На этом этапе система очистит запись в таблице процессов.