- check /sys/class/net/eth0/carrier 這個檔案。
1 :有 接上網路線
0 :沒有 接上網路線
但要看底層kernel driver是否有把值傳上來。
- 【轉貼】Fred's blog
#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <net/if.h> void main(void) { struct ifreq ifr; int sockfd; sockfd = socket(AF_INET, SOCK_DGRAM, 0); bzero(&ifr, sizeof(ifr)); strcpy(ifr.ifr_name, "eth0"); ioctl(sockfd, SIOCGIFFLAGS, &ifr); if (ifr.ifr_flags & IFF_RUNNING) printf("1"); else printf("0"); close(sockfd); return 0; } ifr_flags 的各項旗標和說明: IFF_UP 裝置正在運作 IFF_BROADCAST 有效的廣播位址 IFF_DEBUG Debug 標誌 IFF_LOOPBACK 這是 Loopback 裝置 IFF_POINTOPOINT 這是點到點的網路裝置介面 IFF_RUNNING 資源已分配 IFF_NOARP 無arp協議,沒有設置第二層目的地址 IFF_PROMISC 介面為雜湊(promiscuous)模式 IFF_NOTRAILERS 避免使用 trailer IFF_ALLMULTI 接收所有群組廣播(multicast)封包資料 IFF_MASTER 主負載平衡群(bundle) IFF_SLAVE 從負載平衡群(bundle) IFF_MULTICAST 支持群組廣播(multicast) IFF_PORTSEL 可以通過 ifmap 選擇 media 類型 IFF_AUTOMEDIA 自動選擇 media IFF_DYNAMIC 裝置介面關閉時丟棄地址 其它的看原作
2011年12月21日 星期三
Linux偵測網路線是否有接上
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言