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

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

Я знаю, что есть несколько зависимых от платформы хаков, но я бы предпочел более общее решение.

Ответы [ 22 ]

0 голосов
/ 30 сентября 2013

Это то, что я использовал, когда у меня было похожее требование. Это правильно определяет PID процесса Java. Позвольте вашему Java-коду порождать сервер с заранее заданным номером порта, а затем выполнять команды ОС, чтобы выяснить, PID прослушивает порт. Для Linux

netstat -tupln | grep portNumber
0 голосов
/ 06 ноября 2015

Вот мое решение:

public static boolean isPIDInUse(int pid) {

        try {

            String s = null;
            int java_pid;

            RuntimeMXBean rt = ManagementFactory.getRuntimeMXBean();
            java_pid = Integer.parseInt(rt.getName().substring(0, rt.getName().indexOf("@")));

            if (java_pid == pid) {
                System.out.println("In Use\n");
                return true;
            }
        } catch (Exception e) {
            System.out.println("Exception:  " + e.getMessage());
        }
        return false;
    }
...