FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Process.waitForで止まってしまう現象について

Runtime.execでバッチファイルを実行するJavaプログラムがあるのだが、バッチでエラーが発生するとProcess.waitForで止まるという現象が起きた。

google先生によるとコマンドの出力でバッファがいっぱいになるとwaitForで止まってしまうらしい。
だから、エラー発生時にエラーの内容を出力 → バッファが一杯 → フリーズ となっていたのか……

参考
JavaFAQ(Q11、Q12)   
ひしだま's 技術メモ Hishidama's Java Process Memo
 
 時間もなかったので、「ひしだま's 技術メモ」さんのところの、「exitValue()を利用したタイムアウト」の実装で逃げることにした。
(標準出力の内容が取れないのが痛い。時間があるときにでも修正したいが……)


 ちなみに、どのぐらいのサイズまでなら大丈夫か気になるところだが、簡単に試しただけでも環境によってばらばらっぽかったので調べるのはあきらめた。

 あと、バッチファイル以外でも同様の現象は発生する。(Javaのプログラムに標準出力させるようにしたもので確認)
 標準出力などがいっぱいになったら発生するらしいので、自明ではあるが。


■環境
・Java 1.6
・Windows Vista、XP、W2K8

以上。
スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

検索フォーム
プロフィール

takuan93

Author:takuan93
本ブログの説明書→「ReadMe」

管理者に連絡

カテゴリ
WiX (5)
Ant (1)
フリーエリア
最新記事
カウンター
カレンダー
09 | 2018/10 | 11
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31 - - -
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。