在freebsd中,当电缆被插入/拔出时,以下行被写入到dmesg缓冲区中:
em0:链路状态变为DOWN em0:链路状态变为UP
我想在发生任何情况时运行脚本,但无法以编程方式find任何暴露这些状态更改的内容。 甚至没有C API。
我看到,ifconfig打印“状态:无载体”和“状态:有效”取决于是否连接电缆。 但我宁愿避免轮询,因为1)它会烧毁CPU时间,这对于笔记本电脑来说非常重要; 2)如果轮询间隔过长,可能会错过更改。
电缆插入和拔出时是否有任何通知?
你可能会想看看/etc/devd.conf 。 devd是FreeBSD对内核/硬件事件作出反应的主要方式。
这里有一个例子说明如何匹配一个networkingUP / DOWN事件并运行一个任务,如下所示,手册页有一些很好的信息。
notify 0 { match "system" "IFNET"; match "type" "LINK_UP"; media-type "ethernet"; action "/etc/rc.d/dhclient quietstart $subsystem"; };
http://www.freebsd.org/cgi/man.cgi?query=devd.conf&sektion=5