Linux 如何监控网络接口(go-lang)

Linux 如何监控网络接口(go-lang),linux,go,network-programming,Linux,Go,Network Programming,我需要监视网络接口的本地地址(IP)(即,每当它被更改或接口被拔出时,做一些事情),我想知道最好的方法是什么。目前,我正在使用一个无限循环来获取和验证/匹配接口细节。我监控几个接口,所以我想知道这是不是一件坏事,或者我是否应该使用一些延迟等。如果操作系统在接口更新时会发送信号,那就太好了,但我没有意识到这样的事情 这将是非常特定于系统的。在Linux上,我认为目前最简单的方法是读取每个接口的sysfs文件 $ cat /sys/class/net/eth0/operstate up $ cat

我需要监视网络接口的本地地址(IP)(即,每当它被更改或接口被拔出时,做一些事情),我想知道最好的方法是什么。目前,我正在使用一个无限循环来获取和验证/匹配接口细节。我监控几个接口,所以我想知道这是不是一件坏事,或者我是否应该使用一些延迟等。如果操作系统在接口更新时会发送信号,那就太好了,但我没有意识到这样的事情

这将是非常特定于系统的。在Linux上,我认为目前最简单的方法是读取每个接口的
sysfs
文件

$ cat /sys/class/net/eth0/operstate
up
$ cat /sys/class/net/eth0/carrier
1
偶尔轮询它们不应该消耗太多资源,并提供您所需要的


要获得更及时的更新,您可以设置一个套接字来接收来自内核的
NETLINK\u-ROUTE
更新。有一些,但我不确定它们有多普遍。

您使用的是什么平台?linux(任何),不过在Mac(仅限于开发)上工作也不错。