ストリームで使用されるバッファ サイズを取得する移植可能な方法はありますか?
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
ことは、バッファサイズが常に一定であることを示唆しています。これは常に当てはまりますか?