ここから本文です

javaからシステム共通のperlプログラムを呼び出し、 perlから呼び出すcshにてDBア...

t_k********さん

2017/10/1312:41:17

javaからシステム共通のperlプログラムを呼び出し、
perlから呼び出すcshにてDBアクセスする処理を作成しています。

javaからperlプログラムを下記のように呼び出しています。

Runtime.getRuntime().exec(perlプログラム,引数)

java側では呼び出したプロセスの完了を待つ処理を入れていないので、
javaのプロセスが先に終了することがあるのですが、
この場合にperlからcshを呼び出すことができずに処理が終了してしまいます。
※cshを呼び出す前にjavaプロセスが完了した場合に発生する事象で、csh呼び出し後にjavaプロセスが完了した場合は処理が最後まで実施されます。

対応方法としてはwaitFor()を入れて呼出プロセスの完了をjava側で待機させればよいのですが、
どのような理由でperlプログラムが途中で終了するかご教示頂きたく思っています。

閲覧数:
55
回答数:
1
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

tar********さん

2017/10/1322:43:33

https://stackoverflow.com/questions/931536/how-do-i-launch-a-comple...

なんかで議論してるのは
親プロセスが終了したことが子プロセスに伝えられて終了するみたいな可能性と
あとは、親プロセスと子プロセスの標準入出力が絡み合っていてみたいな可能性ですかね。

OS によって動作が違う面もあるかもしれませんが、
command > nul 2>&1
みたいに標準入出力の行き先をコントロールすると動作が変わったりするかもしれませんね。

この回答は投票によってベストアンサーに選ばれました!

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる