我正在从/ proc/pid/task/stat中读取以跟踪线程中的cpu使用情况.fopen on/proc/pic/task/stat fget来自字符串流sscanf的字符串
我遇到问题但是要让流缓冲区更新.如果我翻了1024个字符如果刷新,但如果我fget 128个字符然后它永远不会更新,我总是得到相同的统计数据.我在阅读之前回放了流,并尝试了fsync.
我经常这样做,所以我不想每次都重新打开文件.这样做的正确方法是什么?
并不是每个程序都能从缓冲 I/O 的使用中受益。
就你而言,我想我只会使用read(2)1。这样,您:
对于您所描述的情况,对于当今功能非常强大的 CPU 来说,效率增益可能并不重要。但我要指出的是,诸如cp(2)和其他重型数据移动器之类的程序不使用缓冲 I/O 包。
1. 即 、open(2)、read(2)、lseek(2)和close(2)。
2.也许为了截取一个论点,在与此相关的问题上,有人通常会提供类似的“有用”建议fflush(stdin),然后另一个人准确地指出 是fflush()由 C99 仅在输出流上定义的,并且依赖特定于实现的行为通常是不明智的。
| 归档时间: |
|
| 查看次数: |
487 次 |
| 最近记录: |