Можно ли вызвать execve () из JVM? - PullRequest
1 голос
/ 01 мая 2019

Существует ли в Java простой механизм для вызова системного вызова exec*(), чтобы заменить JVM новым процессом?Python, например, имеет os.exec*, но я не нашел эквивалента для языков JVM.Я не хочу дочерний процесс, как Runtime.exec() или ProcessBuilder.Мне действительно нужно заменить образ процесса.

@ Deviluc предлагает здесь взломать C / JNI: Java-программа завершается после вызова метода JNI

Но я действительно надеюсь, что тамэто простой способ в чистой Java.Нам не повезло?

1 Ответ

0 голосов
/ 17 мая 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...