ioctl()関数呼び出しを使用して、パイプ側で使用可能なデータのサイズを取得し、それに応じてメモリを割り当てています。
そのために私はこのコードセグメントを次のように書きました
if((read(mg_in, &byte, 1)) == 1)
{
ioctl(mg_in, FIONREAD, &count);
buf = malloc(count+1);
buf[0] = byte;
read_count = read(mg_in, buf+1, count);
}
buf_len = read_count+1;
別のプロセスから、私は常に4バイトを書き込みますが、上記のコードでは、buf_len=4およびread_count=3である必要がありますが、buf_lenの異なる値を9、5などとして取得します。
私はどこで間違っているのですか?