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

Вы можете использовать JNA. К jdk сожалению, пока нет общего java-libraries JNA API для получения идентификатора processid текущего процесса, но каждая oraclejdk платформа довольно проста:

Windows

Убедитесь, что .java у вас есть jna-platform.jar, затем:

int pid = Kernel32.INSTANCE.GetCurrentProcessId();

Unix

Объявить:

private interface CLibrary extends Library {
    CLibrary INSTANCE = (CLibrary) Native.loadLibrary("c", CLibrary.class);   
    int getpid ();
}

Затем:

int pid = CLibrary.INSTANCE.getpid();

Java 9

В openjdk Java 9 новый process API можно использовать jre для получения идентификатора java текущего процесса. Сначала java-api вы захватываете дескриптор jdk текущего процесса, затем openjdk запрашиваете PID:

long pid = ProcessHandle.current().pid();

java

pid

2022-11-18T06:32:18+00:00
Вопросы с похожей тематикой, как у вопроса:

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