-1

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

4

1 回答 1

2

读取/proc/net/dev两次,测量读取之间的时间,以估计带宽使用。更长的间隔产生更好的结果;我会在两次读取之间使用至少十分之一秒,也许是一整秒,以获得可靠的估计。

前两行是标题行,然后是每个设备的一行。有关详细信息,请参阅man 5 proc(最新参考是Linux 手册页项目)。netstat和实用程序都ifconfig使用这个伪文件。

这是我机器上的样子:

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 内核开发人员对向后兼容性非常严格,因此虽然可能会在此伪文件中添加新字段,但现有字段将保持原样。

于 2013-09-09T14:04:52.760 回答