Как заменить текущий процесс Java в Windows, используя JNA / JNI? - PullRequest
0 голосов
/ 27 марта 2011

Я хочу заменить текущий процесс Java новым, как это делает Unix exec . Уже был подобный вопрос здесь, но я бы предпочел, чтобы решение потребляло как можно меньше памяти ( принятый ответ предлагает использовать ClassLoader s, что может привести к утечки памяти; похожее простое решение - использовать другой процесс только для запуска правильного). Конечно, это может быть сделано в зависимости от платформы с использованием JNI, и я думаю, что я могу сделать это для Unix (а решение для Unix, похоже, уже существует), но я почти ничего не знаю о соответствующей Windows API. Какую функцию Windows я должен вызвать? Кто-нибудь уже сделал это?

Ответы [ 2 ]

0 голосов
/ 27 марта 2011

Win32 API не включает в себя понятие «exec». API POSIX делает. Низкоуровневый WinNT API имеет строительные блоки, но их довольно сложно использовать, и, по крайней мере, в прошлом, требовалось использование недокументированных функций.

0 голосов
/ 27 марта 2011

В Windows есть много подсистем на выбор, которые работают на базовой ОС, поэтому помогает понять, к чему вы стремитесь. Например, если вы можете использовать библиотеку времени выполнения C, то вы можете просто использовать семейство функций _exec(), которые очень похожи на их двоюродных братьев Unix. Возможно, вы можете изменить jniexec для работы с окнами, используя их.

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