2

私はいくつかのJavaプログラムを作成しており、やりたいことをすべて終えたら、別のJVMで強制終了/クリーンアップする必要があります。このために、作成しているJavaプロセスのPIDを取得する必要があります。

4

3 に答える 3

6

jps -lWindows と Unix の両方で動作します。を使用して、Java プログラムからこのコマンドを呼び出すことができますRuntime.getRuntime().exec。の出力例jps -lは次のとおりです。

9412 foo.bar.ClassName
9300 sun.tools.jps.Jps

これを解析して完全修飾名を確認し、対応する行から pid を取得する必要がある場合があります。

private static void executeJps() throws IOException {
    Process p = Runtime.getRuntime().exec("jps -l");
    String line = null;
    BufferedReader in = new BufferedReader(new InputStreamReader(
                                                p.getInputStream(), "UTF-8"));

    while ((line = in.readLine()) != null) {
        String [] javaProcess = line.split(" ");
        if (javaProcess.length > 1 && javaProcess[1].endsWith("ClassName")) {
            System.out.println("pid => " + javaProcess[0]);
            System.out.println("Fully Qualified Class Name => " + 
                                           javaProcess[1]);
        }
    }
}
于 2011-10-20T10:40:06.267 に答える
0

Java 9 では、次のようなシステムに依存しないメソッドがいくつか公開されることに注意してください。

System.out.println("Your pid is " + Process.getCurrentPid());
于 2016-08-06T22:51:36.870 に答える
0

コマンドの実行を試すことができます

pidof <program name>

プログラムのpidを見つけることができます。

Linux環境にあります。

于 2011-10-20T10:20:45.690 に答える