- PR -

別プロセスで起動したperlプログラム

1
投稿者投稿内容
akkie
会議室デビュー日: 2005/01/12
投稿数: 5
投稿日時: 2005-01-12 20:46
初心者です。

javaから、xmlファイルのデータを取得し、
HTMLファイルの生成を行うperlプログラムを呼び出しています。

java側では、Htmlファイルが生成されたかどうかを一定時間監視するようにして、
できていた場合とタイムアウトの場合に次処理に進むような作りになっています。

javaからperlプログラムを下記のように呼び出しています。
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(perlCmd);

xmlデータが大きい時に、
perlでの処理が途中で止まってしまいます。(perl.exeのCPU使用率が0になる)
しかし、javaでの処理がタイムアウトになりjavaプロセスが完了後にperlが動き出して、
HTMLファイルの生成が完了します。

javaからではなく、コマンドでperlを直接起動すれば上記のようなことはありません。

そもそも別プロセスで動いているはずなのですが、
何か考えられることはありますでしょうか?

uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-01-12 21:19
標準出力もしくは標準エラー出力がブロックされているのでは?
http://www.gimlay.org/~javafaq/S103.html
ここのQ12を呼んでみてください。
akkie
会議室デビュー日: 2005/01/12
投稿数: 5
投稿日時: 2005-01-14 05:50
ありがとうございます。

試してみます。
akkie
会議室デビュー日: 2005/01/12
投稿数: 5
投稿日時: 2005-01-14 23:28

getInputStream()とgetErrorStream()をスレッドで実行する事により、
うまくいきました。

ukさん、どうもありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)