GNU/Linux >> Linux の 問題 >  >> Linux

JavaでサブプロセスIDを取得

私はしばらく前にこれをやろうとしました(そして失敗しました)。 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 ) );

Linux
  1. Linux – OracleJava7をSetcapCap_net_bind_service+ epと連携させる方法は?

  2. WebexをUbuntu12.04で完全に動作させる方法は?

  3. Unix / Linux でプロセスのパスを取得するにはどうすればよいですか

  1. nohupプロセスを強制終了するプロセスIDを取得するには?

  2. シェルスクリプトでフォークされた子プロセスから PID を取得する方法

  3. PID ではなくプロセス名で Java プロセスを (Linux で) 強制終了します。

  1. プロセス名でPIDを取得するには?

  2. Pythonでsudoで開始されたサブプロセスを強制終了する

  3. コマンドラインからGNU/Linuxで特定のプロセスの親PIDを取得するには?