在嵌入式产品上,如何让用户选择有线还是无线上网呢?如何让他们判断使用了哪种方式上网呢?我们是这样处理的:优先使用网线上网,稳定。即程序自动判断,如果插了网线,则使用网线上网,如果没有网线连接,则无线上网。
所以,问题的重点是如何判断用户是否插了网线!
一、读取/proc/net/dev
$ cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carriercompressed
lo: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth0: 3439 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0
在开发板上/proc/net目录下,还有很多关于网络的信息的文件,如果启动开发板后,eth0中bytes、packets 不为0,那它一定插了网线,但此种方法只适合开机启动时判断,之后的话,就很麻烦了。
获取/proc/net/dev的信息,需要借助getline()函数和sscanf()函数。可链接:getline()函数