C語(yǔ)言實(shí)現(xiàn)linux網(wǎng)卡連接檢測(cè)的方法
本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)linux網(wǎng)卡連接檢測(cè)的具體代碼,供大家參考,具體內(nèi)容如下
直接上代碼吧
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <sys/ioctl.h> #include <linux/if.h> #include <linux/mii.h> #include <linux/sockios.h> #include <errno.h> int get_if_miireg(const char *if_name, int phy_id, int reg_num ) { int fd = -1; struct ifreq ifr; struct mii_ioctl_data *mii; int value; if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) < 0) { perror("socket"); close(fd); return -1; } bzero(&ifr, sizeof(ifr)); strncpy(ifr.ifr_name, if_name, IFNAMSIZ-1); ifr.ifr_name[IFNAMSIZ-1] = 0; if (ioctl(fd, SIOCGMIIPHY, &ifr) < 0) { perror("ioctl"); close(fd); return -1; } mii = (struct mii_ioctl_data *)&ifr.ifr_data; mii->reg_num = reg_num;//0x01 if (ioctl(fd, SIOCGMIIREG, &ifr) < 0) { perror("ioctl"); close(fd); return -1; } close(fd); value = ((mii->val_out&0x04)>>2); return value; } int main(int argc, char* argv[]) { int i=0; if(argc != 2) { fprintf(stderr, "usage: %s <ethname>", argv[0]); return -1; } i = get_if_miireg(argv[1],0x10,0x01); printf( "if_status = %d\n", i ); return 0; }
只能識(shí)別網(wǎng)線是否連接,還沒(méi)識(shí)別網(wǎng)卡是否存在狀態(tài),也不識(shí)別網(wǎng)卡存在是否為down狀態(tài)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Cocos2d-x中實(shí)現(xiàn)彈出對(duì)話框示例
這篇文章主要介紹了Cocos2d-x中實(shí)現(xiàn)彈出對(duì)話框示例,注意本文代碼中的注釋,本文同時(shí)給出了效果圖,需要的朋友可以參考下2014-09-09C++可視化角色按鍵移動(dòng)控制的實(shí)現(xiàn)
這篇文章主要介紹了C++可視化角色按鍵移動(dòng)控制的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2020-03-03C語(yǔ)言與java語(yǔ)言中關(guān)于二維數(shù)組的區(qū)別
這篇文章主要介紹了C語(yǔ)言與java語(yǔ)言中關(guān)于二維數(shù)組的區(qū)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08C++循環(huán)隊(duì)列實(shí)現(xiàn)模型
這篇文章主要介紹了C++循環(huán)隊(duì)列實(shí)現(xiàn)模型,較為詳細(xì)的分析了循環(huán)隊(duì)列算法的原理與實(shí)現(xiàn)方法,具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2014-12-12解析C++哈夫曼樹(shù)編碼和譯碼的實(shí)現(xiàn)
本篇文章主要介紹了C++哈夫曼樹(shù)編碼和譯碼的實(shí)現(xiàn),詳細(xì)的講訴了哈夫曼樹(shù)編碼的原理,有需要的同學(xué)可以了解一下。2016-11-11C++深入講解new與deleted關(guān)鍵字的使用
這篇文章主要介紹了C++中new與deleted關(guān)鍵字的使用,new在動(dòng)態(tài)內(nèi)存中為對(duì)象分配空間并返回一個(gè)指向該對(duì)象的指針;delete接受一個(gè)動(dòng)態(tài)對(duì)象的指針, 銷毀該對(duì)象, 并釋放與之關(guān)聯(lián)的內(nèi)存2022-05-05關(guān)于C語(yǔ)言操作符的那些事(超級(jí)全)
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言操作符的那些事兒,c語(yǔ)言的操作符有很多,包括算術(shù)操作符、移位操作符、位操作符、賦值操作符、單目操作符、關(guān)系操作符、邏輯操作符、條件操作符、逗號(hào)表達(dá)式、下標(biāo)引用、函數(shù)調(diào)用和結(jié)構(gòu)成員,需要的朋友可以參考下2021-08-08