кароче я не вникаю сильно в твой код, но скажу так - любой метод запуска внешнего процесса - нужно контролировать запустился он или нет, а еслы ты запускаеш этот процесс несколько раз - ты должен знать его pid. d в случае твоего кода с runwait - я бы поставил просто sleep после -эсли это не сильно важно, в идеале записал pid и ждал пока он не исчезнет, и после уже запускал новый. или пропиши двойное условие.