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

2022-10-04 00:18:14 字數 1840 閱讀 3845

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