Ответ 1
Я не думаю, что это возможно, используя только встроенную библиотеку. AFAIK, уже нетривиально получить собственный PID рабочего процесса (см. запрос функции и альтернативные механизмы).
Скажите, что у меня есть текущий текущий процесс, как я могу превратить его в объект Process в Java? Процесс уже запущен, поэтому я не хочу запускать другой, я просто хочу инкапсулировать его в объект Process, который я могу использовать в Java-коде. Что-то вроде:
int pid = getPid();
Process proc = magicGetProcess(pid);
спасибо
Я не думаю, что это возможно, используя только встроенную библиотеку. AFAIK, уже нетривиально получить собственный PID рабочего процесса (см. запрос функции и альтернативные механизмы).
В мире * nix захват кода выхода не-дочернего процесса непросто, потому что код выхода просто исчезает вместе с процессом, как только родительский процесс взял код выхода дочернего элемента. Вы можете подключиться к выполняемому процессу с помощью некоторого инструмента трассировки и получить его код выхода, когда процесс умирает. Большинство * nix OSes имеют инструменты командной строки, которые позволят вам сделать это (например, strace на Linux, ферма на SunOS) неинтрузивным способом. Однако вы можете использовать их только в своих собственных процессах или если вы выполняете роль root. Другой альтернативой является настройка подсистемы аудита вашей ОС для записи кодов выхода всех процессов.
Вы не можете. Каждая операция в Процессе требует, чтобы процесс был дочерним процессом. Не произвольный процесс.
как насчет использования RMI? Можно ли передать объект Process процессу, которым он является? Вероятно, нет, потому что процесс не является Serializable