>328
この辺にレスしてみる。

100バイトのデータがあった場合、readの返値は
1回目 100
2回目 0
が返ります。

データが2つに分けられた場合
1回目 N
2回目 100-N
3回目 0
となります。

エラーがあった場合は、-1が返りerrnoがセットされます。