c++ - 计算linux中的读取字节数?
问题描述
我从 main.cpp 中的文件读取
#include <iostream>
#include <fstream>
#include <unistd.h>
#include <string>
int main() {
std::ifstream in ("file.txt");
std::string str;
in >> str;
in.close();
std::cout << str << std::endl;
sleep(100);
}
/proc/[pid]/io 运行前的状态:
rchar: 11179
wchar: 18
syscr: 15
syscw: 2
read_bytes: 0
write_bytes: 0
cancelled_write_bytes: 0
但是进程 io 中的 read_bytes 值在读取后没有改变。为什么?
解决方案
从man proc
, 在/proc/[pid]/io
:
read_bytes
: 读取的字节数。尝试计算此过程确实导致从存储层获取的字节数。这对于块支持的文件系统是准确的。
正如我所解释的那样,如果您的文件已经缓存在内存中,那么读取它不会导致read_bytes
数量增加。
您可以尝试先使用echo 3 | sudo tee /proc/sys/vm/drop_caches
. 然后我怀疑当你再次运行你的程序时,你会在read_bytes
. 请注意,由于从存储中读取是作为完整块(通常为 4K 字节)完成的,因此即使您的文件小于该数字,您也会看到该数字的块大小的倍数。
推荐阅读
- python - 混合生成器协程的消费/生产行为一定是个坏主意吗?
- python - ipywidgets IntSlider 的自定义格式
- docker - Websocket通过两个Nginx代理后得到504
- python-3.x - 如何用“无”字符串值替换无值
- ios - 自定义意图被一遍又一遍地确认,从未处理过
- r - 重命名环境 r 中的对象
- c - 将令牌插入哈希表的问题
- pandas - Pandas Groupby:Groupby 条件语句
- angular - 防止 Chrome 剥离 url 参数
- php - 有没有办法我可以更改 wordpress 主题以显示来自 2 个不同类别的帖子,而不是可以在横幅设置中设置的帖子