读取/ proc时刷新流缓冲区

前端之家收集整理的这篇文章主要介绍了读取/ proc时刷新流缓冲区前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_301_1@我正在从/ proc / pid / task / stat中读取以跟踪线程中的cpu使用情况.
fopen on / proc / pic / task / stat
fget来自流的字符串
字符串上的sscanf

@H_301_1@我遇到问题但是要让流缓冲区更新.
如果我翻了1024个字符如果刷新,但如果我fget 128个字符然后它永远不会更新,我总是得到相同的统计数据.
我在阅读之前回放了流,并尝试了fsync.

@H_301_1@我经常这样做,所以我不想每次都重新打开文件.
这样做的正确方法是什么?
最佳答案
并非每个程序都受益于缓冲I / O的使用.

@H_301_1@在你的情况下,我想我会使用read(2)1.这样,你:

@H_301_1@>消除所有陈旧的buffer2问题
>通过消除双缓冲可能会跑得更快
>可能使用更少的内存
>绝对简化实施

@H_301_1@对于您所描述的情况,效率增益可能与当今功能非常强大的cpu无关.但我要指出像cp(2)和其他重型数据移动器这样的程序不使用缓冲I / O包.

@H_301_1@即,打开(2),读取(2),lseek(2),然后关闭(2).
2.也许是为了拦截一个论点,在与此相关的问题上,有人通常会提供一个与fflush(stdin)一致的“有用”建议,然后另一个人来准确地指出fflush()是由C99定义的.仅在输出流上,依赖于特定于实现的行为通常是不明智的.
原文链接:https://www.f2er.com/linux/439879.html

猜你在找的Linux相关文章