Javaのプロセス間通信ではまったんでメモ
現象は、子プロセスが一定量の処理をした後に(常に同じ場所で)通信が止まるというもの。
原因は子プロセスの標準出力だけを親プロセスが読んで、標準エラー出力を読んでいなかった事。
こうすると、親プロセス内で標準エラー出力がバッファリングされているので、そのバッファがあふれて子プロセスの処理がブロッキングされる(標準エラー出力のバッファが空くのを待つ)けど、永遠にそのバッファは空かないので止まる、という事らしい。
んで、解決方法は標準エラー出力に何も書かない事 OR 親プロセスの方で読み捨てる。とりあえず前者で解決しましたが、後者の方を実装しないと使い勝手が悪いケースもありそう。
今の私の場合だと、親・子ともに自作のアプリなんで前者で問題無いですが、そうでなければ後者が必要かも。