- ベストアンサー
Java特定プロセス名取得方法
- Javaで特定のプロセス名を取得する方法について調査しました。
- 特定のプロセス名を取得するためには、Javaのプロセス管理機能を使用する必要があります。
- プロセス名を取得することで、プロセスの状態や動作を監視することができます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class ProcessGetter { //プロセス表示コマンド(Windows) //mainで使うために、やむを得ずのstatic private final static String PS_COMMAND = "tasklist"; //ProcessBuilderにプロセス表示コマンド登録 //mainで使うために、やむを得ずのstatic private final static ProcessBuilder psbuilder = new ProcessBuilder(PS_COMMAND); //mainで使うために、やむを得ずのstatic private final static List<String> list = new ArrayList<String>(); /* * 実行中のプロセスを返す */ public static List<String> getProcess(){ try { //コマンド実行 Process p = psbuilder.start(); //コマンドのコンソール表示を受け取る BufferedReader bufreader = new BufferedReader (new InputStreamReader(p.getInputStream())); //ArrayListに突っ込みまくる while (true) { String tasks = bufreader.readLine(); list.add(tasks); //コマンドライン表示終了時にストリームをクローズ int c = p.getInputStream().read(); if (c == -1) { p.getInputStream().close(); break; } } return list; } catch (IOException e) { // TODO 自動生成された catch ブロック e.printStackTrace(); }finally{ return list; } } public static void main(String[] args) { List<String> pslist = getProcess(); for(String str : pslist) { System.out.println(str); } } }
その他の回答 (2)
- macrobasic
- ベストアンサー率75% (3/4)
長くなったので分けました 下記に投稿したコードを実行すると、 ?C???[?W?? PID ?Z?b?V?????? ?Z?b?V????# ???????g?p?? ========================= ======================= =========== ============ ystem Idle Process △△△△△ 0 △Services △△△△△ 0△△△△△△ 24 K ystem △△△△△ 4△ Services △△△△△ 0 △△△△△△ 5,176 K mss.exe △△△△△ 456 △Services△△△△△0△△△△△△752 K ↑の実行結果が得られます。(△はスペース) ※文字化け&プロセス名が欠けちゃってますね・・・ 実際に使うのであれば、申し訳ありませんが、自力で何とかして下さい。 Unix/Linuxの場合はPS_COMMANDに"ps"を指定して下さい。 あとはsplitするなりなんなりすれば、プロセス名が取得できると思います。 酔った頭でテキトーに書いたサンプルコードですので、 まともに動かなくてもご了承の程お願い致します。
- askaaska
- ベストアンサー率35% (1455/4149)
外部プログラムを経由して取得する方法しか知らないわ。 C#とかで取得したものをJavaに渡すといいわ。 VBScriptでもできたかも? ところで気になったのだけど 実行時にopenofficeが起動していなくても 実行中にopenofficeが起動したらどうなっちゃうのかしら。
お礼
回答ありがとう御座います。 外部プログラムですか・・・。 >実行時にopenofficeが起動していなくても >実行中にopenofficeが起動したらどうなっちゃうのかしら。 これって、どういう事ですかね? 待機させてる間に起動しきれず、次の処理実行中にopenofficeが起動したらってことですかね・・・ 上記仮説だとして回答します。 待機させた後に、openofficeのコネクタを接続し、コンバータを取得します。 起動しきれない=コネクタ接続できない為、エラーで処理が異常終了するようにしてます。 起動しきれない=待機時間が短いって事だと思うので、設定ファイルの待機時間を増やして再実行(ユーザが)という形を取りました。 こういう感じにって指示を頂いたので。(リーダから)
お礼
回答ありがとう御座います。 せっかくサンプルソースを頂いたのですが、リーダに「変な事するな」といわれてしまいました・・・。 また別の機会に試してみたいと思います。