【Java】プロセス情報(PIDなど) に関するあれこれ

■ はじめに

 * Javaでの PID(プロセスID)などのプロセス情報に関する処理をまとめる。

■ 自分のPIDを取得するには

サンプル

import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;

public class Main {

  public static void main(String[] args) {
    RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean();
    String vmName = mxBean.getName();
    String[] values = vmName.split("@");
    long pid = Long.valueOf(values[0]);
    System.out.println("VM Name : " + vmName);
    System.out.println("PID : " + pid);
  }
}

参考文献

http://etc9.hatenablog.com/entry/20120601/1338574435
http://voidy21.hatenablog.jp/entry/20110520/1305903613
http://qiita.com/LightSpeedC/items/a818a11a20d11f457549
おまけ
https://stackoverflow.com/questions/35842/how-can-a-java-program-get-its-own-process-id
In Java 9
~~~~
long pid = ProcessHandle.current().getPid();
~~~~

■ プロセス情報一覧を表示するには

サンプル

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Main {

  public static void main(String[] args) throws IOException {
    Runtime runtime = Runtime.getRuntime();
    String cmds[] = { "cmd", "/c", "tasklist" };
    //String cmds[] = { "cmd", "/c", "jps" };
    Process proc = runtime.exec(cmds);
    InputStream inputstream = proc.getInputStream();
    InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
    BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
    String line;
    while ((line = bufferedreader.readLine()) != null) {
      System.out.println(line);
    }
  }
}

参考文献

https://blogs.oracle.com/vaibhav/listing-java-process-from-java

関連記事

Java】 外部プログラム/コマンドを実行するには ~ ProcessBuilder ~

https://blogs.yahoo.co.jp/dk521123/34842155.html

Java】プロキシ設定のチェック機能を考える

https://blogs.yahoo.co.jp/dk521123/37181766.html