

String com = "ls -l";
Process pro = Runtime.getRuntime().exec(com);
上記のようにして、外部コマンドを実行しています。
この方法を使用すると投げたコマンドが終了してしまうまで、後の処理が行われません。
バックグラウンド処理を行いたかったので、
String com = "ls -l &";
Process pro = Runtime.getRuntime().exec(com);
としてみましたが、結果は変わりませんでした。
何か別の指定方法が存在するのでしょうか。
ご存知の方、ぜひ教えてください。
No.1ベストアンサー
- 回答日時:
Runtime#execによるコマンドの実行は、そもそも非同期に行われます。
(同期するためにProcess#waitForというメソッドがあります)おそらく、Process#getInputStreamで得たInputStreamからすべて読み込もうとしているのではないでしょうか。だとすると、その時点で同期処理になってしまいます。
目的によるとは思いますが、別スレッドにして走らせてみてはどうでしょう。
new Thread() {
public void run() {
String com = "ls -l";
Process pro = Runtime.getRuntime().exec(com);
// ...
}
}.start();
(例外処理省略)
>Runtime#execによるコマンドの実行は、そもそも非同期に行われます。
>おそらく、Process#getInputStreamで得たInputStreamからすべて読み込もうとしているのではないでしょうか。
>だとすると、その時点で同期処理になってしまいます。
質問を投げた後、プログラムの出力結果を受け取っていることに問題があるのでは???と思ったのですが、
確証もなかったので質問を取り消せなかったのです・・・。
確かにそのとおりで、その後出力結果を受け取らないように等、いろいろな事を行ってみた結果、うまく動作していました。
ご指摘、ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ラジオボタンの選択判定
-
重い処理中のアニメーションgif...
-
Delphiのマルチスレッドの割り...
-
[Java] while(true)の意味
-
C# PostMessage BeginInvok
-
画面系イベントの優先度を上げたい
-
JavaScriptで・・・
-
中学のクラス数
-
「タイプ初期化子が例外をスロ...
-
インスタンス参照でアクセスで...
-
ヒグマを撃退
-
C#において、同じインスタンス...
-
VBScriptからストアドプロシー...
-
String.containsの反対機能はあ...
-
eclipse-Tomcatでのデバッグに...
-
private static という変数の修飾
-
PDFファイルから別ウィンドウで...
-
【sendkeysメソッドが動かずに...
-
サーブレットコンテキストの意...
-
0歳児の指しゃぶりに関して
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaプログラムからポップアッ...
-
Javaでのデバッグコード削除
-
tryの終了
-
Tomcat高負荷時の設定について
-
SwingUtilities.invokeLater(ne...
-
ラベルの表示までが異常に遅い...
-
vba Sleep関数について教えてく...
-
Delphiのマルチスレッドの割り...
-
ラジオボタンの選択判定
-
アコーディオンメニューをアン...
-
JSP、サーブレットの初期処理
-
ftp 同時複数接続の負荷テスト...
-
[Java] while(true)の意味
-
C#で別スレッドの終了を知りたい
-
switch文の中に、throws new Ex...
-
アロー関数がよくわかりません
-
セル範囲で文字を検索はFor必須?
-
PHP
-
Servlet+JSPを使ったWEBアプリ...
-
Javaプログラムから外部コマン...
おすすめ情報