有没有办法计算C中当前进程的I / O和内存?

时间:2014-04-22 02:01:27

标签: c linux

如果我使用

/usr/bin/time -f"%e,%P,%M,%I,%O"

我得到(最后三个占位符)进程使用的内存,以及是否有一些输入和输出。

显然,使用%e很容易获得sys/time.h或类似内容,但有办法获得%M%I和{{ 1}}以编程方式?

1 个答案:

答案 0 :(得分:2)

您可以读取并解析/proc文件系统中的文件。 /proc/self是指访问/proc文件系统的进程。

/proc/self/statm包含有关内存使用情况的信息,以页为单位。样本输出:

% cat /proc/self/statm
1115 82 63 12 0 79 0

字段为size resident share text lib data dt;有关其他详细信息,请参阅proc手册页。

/proc/self/io包含当前进程的I / O.样本输出:

% cat /proc/self/io
rchar: 2012
wchar: 0
syscr: 6
syscw: 0
read_bytes: 0
write_bytes: 0
cancelled_write_bytes: 0

不幸的是,io手册页(至少在我的Debian系统中)没有记录proc。我也检查了iotop源代码,看看它是如何获得每个进程的I / O信息的。