NIC比特/秒速率统计

时间:2013-09-09 13:39:09

标签: c linux networking

我应该使用哪个API来获取Linux上当前的网络带宽使用情况。 我知道它可以简单地用脚本完成,但是我可以使用C获得相同的效果吗?

1 个答案:

答案 0 :(得分:2)

读取/proc/net/dev两次,测量读取之间的时间,以估算带宽使用情况。间隔时间越长,效果越好;我可以使用至少十分之一秒,也许在两次读取之间一整秒,以获得可靠的估计。

前两行是标题行,后面是每个设备的一行。有关详细信息,请参阅man 5 proc(最新的参考文献是Linux man-pages project)。 netstatifconfig实用程序都使用此伪文件。

这是我机器上的样子:

Inter-|   Receive                                                |  Transmit
 face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
  eth0: 159107615  116900    0    0    0     0          0         0  7258457   88350    0    0    0     0       0          0
    lo:  367802    2282    0    0    0     0          0         0   367802    2282    0    0    0     0       0          0

请注意,这是一个内核伪文件,因此从未本地化。 Linux内核开发人员对向后兼容性非常严格,因此虽然可能会在此伪文件中添加新字段,但现有字段将保持不变。