cygwinのgccで作成されたCプログラムをJavaからフォークして使おうとしましたが、どうしても標準出力とエラー出力を完全に受け取れません。
JavaのProcessオブジェクトからgetInputStream()とgetErrorStream()でストリームを取得して、readしたのですが、出力の途中で止まってしまいます。
Cプログラムでfflush()していない?と思いましたが、エラー出力も取れないので、原因は別のところにありそうです。
いろいろ調べたのですが、関連する情報が見つからず、途方に暮れていたところ、cygwinの/libの下にlibpipeがあるのに気がつきました。万策尽きていたので、藁にもすがる思いで-lpipeでリンクしたところ、無事問題が解消されました。
Unixにはlibpipeってあったかなぁ?ちょっとよく分かりませんが、とりあえず解決です。