Большинство процессов в linux следуют за стеком вызовов, где процесс A вызывает процесс B, который вызывает процесс C. Когда процесс C завершается, управление возвращается к процессу B. и т. Д.
Похоже, в этом случае вы хотите, чтобы java вызывал минимум, но когда java завершится, вернитесь к родительская оболочка.
Я не знаю, каким образом вы можете завершить JVM при вызове другого процесса (возвращаясь к родительскому объекту JVM, когда он завершается). Возможно, с некоторыми умными C вызовами, использующими JNI, но на самом деле это уже не java и может создать новые проблемы.
Вы можете заставить JVM обернуть целевой процесс и пройти через пользовательские входы и выходы , В качестве альтернативы, используйте обмен файлами, например, программа java записывает командную строку в файл, который родительский сценарий bash выполняет после завершения JVM, но это немного мешает.