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]);