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

源码如下:

#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 测试。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-01 22:45:04

linux c 获取网卡状态(UP or DOWN)的相关文章

linux ethtool 查看网卡状态

ethtool 工具关于网络协商功能介绍: ethtool - Display or change ethernet card settings(ethtool 是用来显示和更改网卡设置的工具):这个工具比较复杂,功能也特别多.由于洋文比较难懂.所以我们还是把网络设备协商方式的设置方法说一说. 2.1 ethtool 显示网络端口设置功能: 这个功能比较好办.就是ethtool 后面直接接网絽接口就行:比如下面的例子: [[email protected] ~]# ethtool eth0Set

linux下的shell命令的编写,以及java如何调用linux的shell命令(java如何获取linux上的网卡的ip信息)

程序员都很懒,你懂的! 最近在开发中,需要用到服务器的ip和mac信息.但是服务器是架设在linux系统上的,对于多网口,在获取ip时就产生了很大的问题.下面是在windows系统上,java获取本地ip的方法.贴代码: package com.herman.test; import java.net.InetAddress; /** * @see 获取计算机ip * @author Herman.Xiong * @date 2014年5月16日 09:35:38 */ public class

(笔记)Linux下检测网卡与网线连接状态

http://blog.chinaunix.net/space.php?uid=20357359&do=blog&cuid=1798479 Linux下检测网卡与网线连接状态,使用ioctl向socket发送SIOCETHTOOL命令字. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <fcntl.h> #include <errno.h>

【Linux环境编程】获取网卡的实时网速

在windows下面,我们可以看到360或者是qq安全卫士的"安全球",上面显示实时的网速情况.那么在linux里面如何获取网卡的实时网速?其实原理很简单,读取需要获取网速的网卡在某段时间dT内流量的变化dL,那么实时网速就出来了,Speed = dL / dt. linux在ifaddrs.h中提供了函数: /* Create a linked list of `struct ifaddrs' structures, one for each network interface on

linux 下C实现获取网卡IP和MAC地址

本文使用getifaddrs 函数获取网卡的IP和MAC地址.getifaddrs函数有个特点,就是获取地址时以链表方式返回,且每个链表节点要么是IP,要么是MAC,所以如果要将网卡的IP和MAC地址同时返回的话,需要对对返回链表进行查找和重新组合.本文实现目的,在于以网卡名方式返回IP和MAC地址.代码如下: #ifndef _MYLIB_H #define _MYLIB_H #include <stdlib.h> #include <errno.h>   #define err

linux中多网卡绑定

linux中多网卡绑定 实验背景: (1)虚拟机系统:Centos6.7 (2)两张网卡 网卡绑定应用: 为了提供网络的高可用性,我们可能需要将多块网卡绑定成一块虚拟网卡对外提供服务,这样即使其中的一块物理网卡出现故障,也不会导致连接中断.比如我们可以将eth0和eth1绑定成虚拟网卡bond0. 实验步骤: (1)在/etc/sysconfig/network-scripts/下创建虚拟网卡bond0的配置文件ifcfg-bond0,命令如下: [[email protected] ~]# c

Linux下查看网卡流量

        在Linux下怎么看网络流量? 在Windows下,我们可以很方便的通过360来查看网络流量,知道哪个进程占用的网络带宽比较多.那在Linux下怎么看流量呢,对于Web服务器来说这是很重要的. 下面这边博客很仔细的介绍了Linux下看流量的方法: Linux 各种查看网卡流量的方法  http://jasonyong.blog.51cto.com/47753/174197 我使用了其中一些,还找了网上其他一些资料,总结如下: 1. 使用 iptraf iptraf是一个实时查看网

centos下检查网卡状态

由于ifconfig命令没法看到网卡的一些状态, 以下有5种方法查看网卡状态,是否连通网线 How to check physical Network Link Status on Linux (RHEL/Centos)原文:http://linuxsupporttips.wordpress.com/2011/08/01/how-to-check-physical-network-link-status-on-linux-rhelcentos/ There are several ways to

Linux下多网卡时,如何快速辨别网卡ID与物理网卡的对应关系(即ethtool命令)

一般购买的服务器都有4个网卡,这个时候在安装好服务器后,配置IP的时候就郁闷了 如是一个浪潮8560M2服务器安装Redhat后的网卡显示: [[email protected] ~]# ifconfig -a eth0      Link encap:Ethernet  HWaddr 00:E0:ED:2D:0F:58 inet addr:192.168.4.10  Bcast:192.168.4.255  Mask:255.255.255.0 UP BROADCAST RUNNING MUL