红联Linux门户
Linux帮助

linux c获取网卡状态(UP or DOWN)

发布时间:2015-11-01 09:02:15来源:linux网站作者:linux_zhu

源码如下:

#include <sys/socket.h>
#include <sys/ioctl.h>
#include <linux/if.h>
#include <string.h>
#include <stdio.h>

char *net_detect(char* net_name)
{
int skfd = 0;
struct ifreq ifr;

skfd = socket(AF_INET, SOCK_DGRAM, 0);
if(skfd < 0) {
printf("%s:%d Open socket error!\n", __FILE__, __LINE__);
return NULL;
}

strcpy(ifr.ifr_name, net_name);

if(ioctl(skfd, SIOCGIFFLAGS, &ifr) <0 ) {
printf("%s:%d IOCTL error!\n", __FILE__, __LINE__);
printf("Maybe ethernet inferface %s is not valid!", ifr.ifr_name);
close(skfd);
return NULL;
}

if(ifr.ifr_flags & IFF_RUNNING) {
return "UP";
} else {
return "DOWN";
}

}
int main()
{
printf("%s\n",net_detect("eth0"));
return 0;
}


总结:
该程序是测试 ifconfig 命令中 指定网卡 是有用 RUNNING 。可以配合 ifconfig eth0 up 和 ifconfig eth0 down 测试。