C語言實現linux網絡卡檢測 改進版

2021-06-19 22:31:25 字數 1681 閱讀 2620

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(ifr));

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* argv)

i = cshell_netlink_status(argv[1]);

printf( "cshell_netlink_status if_status = %d\n", i );

i = c_netlink_status(argv[1]);

printf( "c_netlink_status if_status = %d\n", i );

return 0;

}

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...