私はしばらく前にこれをやろうとしました(そして失敗しました)。 pidをファイルにダンプするシェルスクリプトにコマンドをラップすることになりました。最善の解決策ではありませんが、このハードルを乗り越えることができました.
このための公開 API はまだありませんが (http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4244896 を参照)、回避策があります。
最初の回避策は、ps
のような外部プログラムを使用することです。 Runtime.exec()
を使用して呼び出す pid を取得するには :)
もう 1 つは、java.lang.Process
という事実に基づいています。 クラスは抽象であり、実際にはプラットフォームに応じて具体的なサブクラスを取得します。 Linux では、java.lang.UnixProcess
が返されます。 プライベートフィールド int pid
を持っています .リフレクションを使用すると、このフィールドの値を簡単に取得できます:
Field f = p.getClass().getDeclaredField("pid");
f.setAccessible(true);
System.out.println( f.get( p ) );