- - PR -
Runtime.getRuntime().exec(commands)の実行時で動作がとまる。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-10-30 18:34
以下のようなソースで外部シェルをlinux上で実行しています。
しかしながら、一部の外部コマンドを実行すると、その外部コマンドがエラーになる場合、上記ソースでは_inputStreamのWhileの部分で処理が停止してしまいます。 ソースを改変し、_errorStreamのWhileのみにするとエラーメッセージがArrayListに追加されて終了します。 ちなみに、その外部コマンドとは if ( ! xmllint --noout --catalogs --valid ${OUT_FOLDER}/${WORDML_FILE_NAME}_m.xml ); then exit 2 fi です。(xmllintはxalanかsaxonについていたXMLチェックプログラムです) この事から、一部の外部コマンドはエラーの場合、_process.getInputStream()に値を返却せずに、_process.getErrorStream()に値を返却するため、_process.getInputStream()の部分でハングアップするのではないかと予想しています。 上記予想は正しいでしょうか? また、正しい場合対処方法はどのようなものになるのでしょうか? 今は、『シェルに目印を入れて、その目印のエコーが返却されたら、Javaでストリームを切り替える。』でしのいでいますが、とても良い方法とは思えません。 よろしくお願いします。 | ||||||||
|
投稿日時: 2005-10-30 19:25
Runtime#exec()で実行した外部コマンドが動いていないようです。(外部コマンド実行でのリダイレクトについて より)や、
Apache AntのExecタスクのソース が参考になると思います。 | ||||||||
|
投稿日時: 2005-11-01 22:43
ありがとうございました。 仰るとおりでした。 以下のようになりました。(でも、サンプルソースが元々この形だったら・・・とは思いました^^)
|
1