c語言+shell 實現linux網絡卡狀態檢測 和 c語言實現linux網絡卡連線檢測 2文的方法各有缺陷,比如有些系統執行ifconfig需要root許可權,要不就不支援ioctl(fd, siocgmiiphy, &ifr)這樣的操作。以下給出了c語言實現linux網絡卡連線檢測 的改進版實現與c語言+shell 實現linux網絡卡狀態檢測 同樣的功能。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int cshell_netlink_status(char *if_name)
else }
if(ret == 1)
else
} }
if(ret == 2)
'",if_name);
read_fp = popen(cmd, "r");
if ( read_fp != null )
else
} }
return -1;}
int c_netlink_status(const char *if_name )
ifc.ifc_len = sizeof(ifrs_buf);
ifc.ifc_buf = (caddr_t)ifrs_buf;
if (ioctl(fd, siocgifconf, (char *)&ifc) <0)
if_number = ifc.ifc_len / sizeof(struct ifreq);
for(i=0; i< if_number; i++) }
if(i >= if_number)
bzero(&ifr, sizeof(www.cppcns.comifr));
strncpy(ifr.ifr_name, if_name, ifnamsiz-1);
ifr.ifr_name[ifnamsiz-1] = 0;
if (ioctl(fd, siocgifflags, (char *)&ifr) <0)
#if 1
if(!(ifr.ifr_flags & iff_up))
if(!(ifr.ifr_flags & iff_running))
fprintf(stderr, "device_linked\r\n");
return 3;
#else
edata.cmd = ethtool_glink程式設計客棧;
edata.data = 0;
ifr.ifr_data = (char *) &edata;
if(ioctl( fd, siocethtool, &ifr ) < 0)
if(edata.data == 0)
else }
#endif}
int main(int argc, char* ar**)
i = cshell_netlink_status(ar**[1]);
printf( "cshell_netlink_status if_status = %d\n", i );
i = c_netlink_status(ar**[1]);
printf( "c_netlink_status if_status = %d\n", i );
return 0;
}本文標題: c語言實現linux網絡卡檢測改進版
本文位址:
C語言實現linux網絡卡檢測 改進版
c語言 shell 實現linux網絡卡狀態檢測 和 c語言實現linux網絡卡連線檢測 2文的方法各有缺陷,比如有些系統執行ifconfig需要root許可權,要不就不支援ioctl fd,siocgmiiphy,ifr 這樣的操作。以下給出了c語言實現linux網絡卡連線檢測 的改進版實現與c語...
linux 下C語言實現 讀取網絡卡速度
這幾天要寫乙個監控之類東東,其中網絡卡一項要計算利用率,那就要取得網絡卡本身速度才能計算出來,本來想用perl實現,但發現網上沒有現成的東東,後來幾經輾轉,最後想起ethtool能取到,就參考了此原始碼,貼出來供大家以後有個思路吧,有時間再轉成perl的 直接編譯命令 gcc p g getnet....
順序表的增刪查改(C語言實現)
common.h ifndef common h define common h include include include include include include 檢查記憶體洩漏 pragma warning disable 4996 define elemtype int defin...