После прочтения комментариев я понимаю, что вы запускаете X экземпляров процесса Java, и каждый разветвляется дочерний процесс.
Когда процесс разветвляется, родительский процесс не может выйти.Если это закончилось, вы завершили процесс-сироту, и это не то, что вам нужно.
Вы не даете подробных сведений о том, что делает этот подпроцесс и почему это нужно делать в разветвленной программе на Си, но я бы предложилвыглядит следующим образом:
Создайте процесс-обертку, который связывается с процессом X java, получает входные данные и возвращает выходные данные.
Таким образом, вместо того, чтобы иметь процесс X java + X дочерних процессов, вы получите процесс X java + 1Процесс-обертка, вызывающий исполняемый файл с разными параметрами.