如何可移植地获取文件流的缓冲区大小?

克里斯·斯诺

是否有一种便携式方法来检索流使用的缓冲区大小?

在线搜索帖子,我发现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表明缓冲区大小将始终是一个常数。总是这样吗?

Yu Hao

依靠BUFSIZ表明缓冲区大小将始终是一个常数。总是这样吗?

不,这不对。

在致电给 setvbuf

int setvbuf(FILE * restrict stream, char * restrict buf, int mode, size_t size);

您可以size自己选择价值(尽管您可以选择使用BUFSIZE)宏BUFSIZE仅在您调用时起作用setbuf

void setbuf(FILE * restrict stream, char * restrict buf);

它等效于setvbuf使用_IOFBFmode和BUFSIZsize的值或(如果buf是空指针)使用mode的值调用函数_IONBF

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何获取缓冲区的文件路径?

来自分类Dev

获取缓冲区的大小

来自分类Dev

如何使用puppeteer获取下载流(缓冲区)?

来自分类Dev

如何从缓冲区返回文件流?

来自分类Dev

如何获取数字指定的缓冲区的“文件类型”?

来自分类Dev

如何获取数字指定的缓冲区的“文件类型”?

来自分类Dev

如何在内存流中获取word文件,将其存储在缓冲区中并以PDF格式返回?

来自分类Dev

如何指定WebSocket的缓冲区大小?

来自分类Dev

如何使char缓冲区充当文件?

来自分类Dev

如何获取丢失的Udp缓冲区大小超出的数据包

来自分类Dev

通过FFI :: Platypus获取Perl中缓冲区的大小

来自分类Dev

BufferedInputStream的缓冲区大小

来自分类Dev

FUSE缓冲区的大小?

来自分类Dev

Awk缓冲区大小

来自分类Dev

您将如何限制缓冲区大小并返回c ++中的缓冲区限制?

来自分类Dev

如何使用流解析缓冲区中的行?

来自分类Dev

如何从内存缓冲区加载张量流图

来自分类Dev

如何在流缓冲区C中添加参数

来自分类Dev

如何使用流解析缓冲区中的行?

来自分类Dev

文件I / O中的缓冲区大小

来自分类Dev

确定文件大小以在c中分配缓冲区

来自分类Dev

通过套接字发送文件 - 缓冲区大小

来自分类Dev

文件大小和缓冲区超调

来自分类Dev

什么决定了镶木地板文件缓冲区大小

来自分类Dev

如何最好地组织常量缓冲区

来自分类Dev

如何为SQLBindCol确定正确的缓冲区大小

来自分类Dev

如何设置终端缓冲区回滚大小?

来自分类Dev

如何增加OUT参数的缓冲区大小

来自分类Dev

缓冲区大小如何影响NIO通道性能?