Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了读取/ proc时刷新流缓冲区大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在从/ proc / pid / task / stat中读取以跟踪线程中的cpu使用情况.fopen on / proc / pic / task / statfget来自流的字符串字符串上的sscanf我遇到问题但是要让流缓冲区更新.如果我翻了1024个字符如果刷新,但如果我fget 128个字符然后它永远不会更新,我总是得到相同的统计数据.我在阅读

我正在从/ proc / pid / task / stat中读取以跟踪线程中的cpu使用情况.
fopen on / proc / pic / task / stat
fget来自流的字符串
字符串上的sscanf

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

我经常这样做,所以我不想每次都重新打开文件.
这样做的正确方法是什么?

最佳答案
并非每个程序都受益于缓冲I / O的使用.

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

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

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

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

大佬总结

以上是大佬教程为你收集整理的读取/ proc时刷新流缓冲区全部内容,希望文章能够帮你解决读取/ proc时刷新流缓冲区所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。