是否有一种可移植的方法来检索流使用的缓冲区大小?
在网上搜索帖子,我发现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
表明缓冲区大小将始终是一个常数。总是这样吗?