찾다

 >  Q&A  >  본문

c++ - mac系统,纯c语言怎样获取网卡信息?

mac系统,纯c语言怎样获取网卡信息?

黄舟黄舟2804일 전609

모든 응답(2)나는 대답할 것이다

  • 黄舟

    黄舟2017-04-17 14:32:44

    摘自zabbix里面的代码,不知道够不够,先参考一下吧

    static int    get_ifmib_general(const char *if_name)
    {
        int    mib[6], ifcount;
        size_t    len;
    
        if (NULL == if_name || '\0'== *if_name)
            return SYSINFO_RET_FAIL;
    
        mib[0] = CTL_NET;
        mib[1] = PF_LINK;
        mib[2] = NETLINK_GENERIC;
        mib[3] = IFMIB_SYSTEM;
        mib[4] = IFMIB_IFCOUNT;
    
        len = sizeof(ifcount);
    
        if (-1 == sysctl(mib, 5, &ifcount, &len, NULL, 0))
            return FAIL;
    
        mib[3] = IFMIB_IFDATA;
        mib[5] = IFDATA_GENERAL;
    
        len = sizeof(ifmd);
    
        for (mib[4] = 1; mib[4] <= ifcount; mib[4]++)
        {
            if (-1 == sysctl(mib, 6, &ifmd, &len, NULL, 0))
            {
                if (ENOENT == errno)
                    continue;
    
                break;
            }
    
            if (0 == strcmp(ifmd.ifmd_name, if_name))
                return SUCCEED;
        }
    
        return FAIL;
    }

    회신하다
    0
  • 怪我咯

    怪我咯2017-04-17 14:32:44

    top命令的写法是通过读取/proc文件系统中的信息来的。
    /proc/net/dev和/proc/net/snmp可以获取interface等字段。
    如果是获取硬件设备信息的话,可以用system()调用awk和lspci两个命令来获取厂商型号这些信息。

    회신하다
    0
  • 취소회신하다