Как программа Java может получить свой собственный идентификатор процесса?

$ ('. UPDATE'). click (function () {}); V / S $ (document) .on ('click', '. UPDATE', function () {});

[введите описание изображения здесь] [10]

333
задан mrsrinivas 23 February 2018 в 17:52
поделиться

4 ответа

Там не существует никакой платформенно независимый путь, который, как могут гарантировать, будет работать во всех jvm реализациях. ManagementFactory.getRuntimeMXBean().getName() похож на лучшее (самое близкое) решение. Это коротко, и , вероятно работы в каждой реализации в широком использовании.

На linux+windows это возвращает значение как 12345@hostname (12345 являющийся идентификатором процесса). Остерегайтесь, хотя это согласно документам , нет никаких гарантий об этом значении:

Возвраты имя, представляющее рабочую виртуальную машину Java. Возвращенная строка имени может быть любой произвольной строкой, и реализация виртуальной машины Java может принять решение встроить определенную для платформы полезную информацию в возвращенную строку имени. Каждая рабочая виртуальная машина могла иметь другое имя.

В Java 9 новое API процесса может использоваться:

long pid = ProcessHandle.current().pid();
313
ответ дан bacar 23 November 2019 в 00:43
поделиться

Это зависит от того, откуда Вы ищете информацию.

при поиске информации от консоли можно использовать команду jps. Команда дает вывод, подобный PS Unix, управляют, и идет с JDK, так как я верю 1.5

, Если Вы смотрите от процесса, RuntimeMXBean (как сказано Wouter Coekaerts) является, вероятно, Вашим лучшим выбором. Вывод от getName () в Windows с помощью Sun JDK 1.6 u7 находится в форме [PROCESS_ID] [MACHINE_NAME]. Вы могли однако попытаться выполнить jps и проанализировать результат этого:

String jps = [JDK HOME] + "\\bin\\jps.exe";
Process p = Runtime.getRuntime().exec(jps);

, Если выполнено без опций вывод должен быть идентификатором процесса, сопровождаемым именем.

4
ответ дан Ryan P 23 November 2019 в 00:43
поделиться

Вы можете проверить мой проект: JavaSysMon на GitHub. Он предоставляет идентификатор процесса и кучу других вещей (использование процессора, памяти) кроссплатформенность (в настоящее время Windows, Mac OSX, Linux и Solaris)

.
18
ответ дан 23 November 2019 в 00:43
поделиться

Попробуйте Sigar . очень обширные API. Лицензия Apache 2.

    private Sigar sigar;

    public synchronized Sigar getSigar() {
        if (sigar == null) {
            sigar = new Sigar();
        }
        return sigar;
    }

    public synchronized void forceRelease() {
        if (sigar != null) {
            sigar.close();
            sigar = null;
        }
    }

    public long getPid() {
        return getSigar().getPid();
    }
36
ответ дан 23 November 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: