ストリームで使用されるバッファ サイズを取得する移植可能な方法はありますか?
glibcオンラインで投稿を検索すると、次の方法があることがわかりました。
size_t __fbufsize (FILE *stream)
ただし、これは glibc を使用している場合にのみ機能します。
別のオプションは、マクロBUFSIZとフラグ_IONBFとを使用すること_IOLBFです:
void print_buffering(FILE * fp)
{
if (fp->_flags & _IONBF)
{
printf("No buffering\n");
}
else if (fp->_flags & _IOLBF)
{
printf("Line buffering - buffer size: %d\n", BUFSIZ);
}
else
{
printf("Full buffering - buffer size: %d\n", BUFSIZ);
}
}
に依存するBUFSIZことは、バッファサイズが常に一定であることを示唆しています。これは常に当てはまりますか?