Подтвердить что ты не робот

Java: Получить процесс с учетом pid

Скажите, что у меня есть текущий текущий процесс, как я могу превратить его в объект Process в Java? Процесс уже запущен, поэтому я не хочу запускать другой, я просто хочу инкапсулировать его в объект Process, который я могу использовать в Java-коде. Что-то вроде:

int pid = getPid();
Process proc = magicGetProcess(pid);

спасибо

4b9b3361

Ответ 1

Я не думаю, что это возможно, используя только встроенную библиотеку. AFAIK, уже нетривиально получить собственный PID рабочего процесса (см. запрос функции и альтернативные механизмы).

Быстрый просмотр класса java.lang.Process показывает, что вы можете написать собственную реализацию java.lang.Process с использованием JNI и собственного кода, Тогда ваш пользовательский класс может реализовать дополнительные методы, например, в вашем вопросе.

Ответ 2

В мире * nix захват кода выхода не-дочернего процесса непросто, потому что код выхода просто исчезает вместе с процессом, как только родительский процесс взял код выхода дочернего элемента. Вы можете подключиться к выполняемому процессу с помощью некоторого инструмента трассировки и получить его код выхода, когда процесс умирает. Большинство * nix OSes имеют инструменты командной строки, которые позволят вам сделать это (например, strace на Linux, ферма на SunOS) неинтрузивным способом. Однако вы можете использовать их только в своих собственных процессах или если вы выполняете роль root. Другой альтернативой является настройка подсистемы аудита вашей ОС для записи кодов выхода всех процессов.

Ответ 3

Вы не можете. Каждая операция в Процессе требует, чтобы процесс был дочерним процессом. Не произвольный процесс.

Ответ 4

как насчет использования RMI? Можно ли передать объект Process процессу, которым он является? Вероятно, нет, потому что процесс не является Serializable