我应该使用哪个API来获取Linux上当前的网络带宽使用情况。 我知道它可以简单地用脚本完成,但是我可以使用C获得相同的效果吗?
答案 0 :(得分:2)
读取/proc/net/dev
两次,测量读取之间的时间,以估算带宽使用情况。间隔时间越长,效果越好;我可以使用至少十分之一秒,也许在两次读取之间一整秒,以获得可靠的估计。
前两行是标题行,后面是每个设备的一行。有关详细信息,请参阅man 5 proc
(最新的参考文献是Linux man-pages project)。 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内核开发人员对向后兼容性非常严格,因此虽然可能会在此伪文件中添加新字段,但现有字段将保持不变。