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