32ビットプロセスAがあり、64ビットプロセスで実行する必要がある別のJavajarを開始する必要があります。それらはソケットを介して通信します。このシステムは正常に動作します。
ただし、まれに、2番目のプロセス(B)が、それを起動するプロセス(A)を閉じるまでハングすることがあります。この問題をデバッグしているときに、プロセスBの入力ストリームを読み取って、出力されているメッセージを確認し、プロセスBの入力ストリームから読み取ることで問題が解決したことを確認しました。したがって、プロセスBの入力ストリームのみを読み取るダムスレッドにまたがり、すべてが正常に機能しました。
問題は非常に奇妙でしたが、先に進む必要がありました。コンソールの出力バッファサイズなどと関係があると思いました。しかし、開始されたプロセスの入力ストリームを読み取ったにもかかわらず、この問題が新しくインストールされたマシンで発生するのを確認しました(B)。
非常にまれにしか発生しませんが、なぜこれが発生するのかを絶対に確認したいと思います。理由は何でしょうか?私たちが気付いていないデフォルト設定はありますか?あなたは以前にそのようなケースに遭遇したことがありますか?
簡単な要約:
- プロセスAは32ビットプロセスで実行されます
- プロセスBは64ビットプロセスで実行されます
- プロセスAは、64ビットのjavaw.exeをポイントしてRuntime.execを発行することにより、プロセスBを開始します。
- プロセスBは、プロセスAを閉じるまでハングします
- プロセスBがタスクマネージャーに表示されます