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で質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- UNIX・Linux cronでシェルスクリプト実行時のkubactlコマンドが機能しない対処法。 2 2022/08/03 18:58
- C言語・C++・C# TCP/IP通信時のサーバーからの受信 2 2022/11/23 09:11
- Windows 10 外部ドライブにマウントできない問題について 9 2022/03/22 18:08
- Access(アクセス) エクセルのマクロについて教えてください。 2 2023/02/03 16:07
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Excel(エクセル) Powershell エクセル検索 完全一致の方法 1 2022/06/05 20:19
- PowerPoint(パワーポイント) エクセルのマクロについて教えてください。 2 2022/11/18 15:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
tryの終了
-
Javaでのデバッグコード削除
-
WPF C#でF10のイベント取得方法...
-
印刷プレビュー表示したい .NET
-
素数判定を再帰処理で
-
ExcelVBA で文字列の特定の文字...
-
JavaScriptからJAVAクラスを呼...
-
onBlurとonFocusの処理順序につ...
-
表示待ち時間に「処理中...」の...
-
重い処理を行っているとGIFアニ...
-
巡回バッファを使用した生産者-...
-
MediaPlayerコントロールのイベ...
-
switch文の中に、throws new Ex...
-
ラジオボタンの選択判定
-
C#で別スレッドの終了を知りたい
-
C# PostMessage BeginInvok
-
再度、スレッドが実行中かどう...
-
アコーディオンメニューをアン...
-
Tomcat高負荷時の設定について
-
Javaアプリケーション実行の返...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
tryの終了
-
Tomcat高負荷時の設定について
-
onBlurとonFocusの処理順序につ...
-
Javaでのデバッグコード削除
-
ラジオボタンの選択判定
-
WPF C#でF10のイベント取得方法...
-
doGetとdoPostの違い
-
SwingUtilities.invokeLater(ne...
-
アコーディオンメニューをアン...
-
数値の定数を付ける時
-
switch文の中に、throws new Ex...
-
JAVAからJAVASCRIPT関数を呼び出し
-
再度、スレッドが実行中かどう...
-
ラベルの表示までが異常に遅い...
-
JavaScriptからJAVAクラスを呼...
-
javaのプログラムが止まる
-
Javaプログラムからポップアッ...
-
C#で別スレッドの終了を知りたい
-
vba Sleep関数について教えてく...
-
Tomcatのスレッドを破棄する方法
おすすめ情報