JavaでプロセスのPIDを取得する

JavaでカレントプロセスのPIDを取得する方法。 getpid()システムコール相当。

参考: https://stackoverflow.com/questions/35842/how-can-a-java-program-get-its-own-process-id

Java 9

Java 9はjava.lang.ProcessHandle::pid()でPIDを取得する正式な方法を提供している。

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

Java 8以前

PIDを取得する正式な方法はない。

java.lang.management.RuntimeMXBean::getName()が返す「Java仮想マシンを表す名前」が“PID@hostname”であることを利用する。 JVMの実装依存になるため動作保証はない。

String pid_and_hostname = java.lang.management.ManagementFactory.getRuntimeMXBean().getName();
int pid = Integer.parseInt(pid_and_hostname.split("@")[0]);