为什么ifconfig的FLAGS值与每个接口的ifa_flags值不同,如何获得ifconfigs值?

时间:2017-07-10 23:22:27

标签: macos kernel network-interface ifconfig

运行以下代码打印出每个接口的ifa_flags值。紧接着运行ifconfig将为每个接口显示不同的FLAGS值。为什么是这样?如何在不解析shell命令输出的情况下获取ifconfig的FLAGS值?

void printFlags(){
 struct ifaddrs *addrs, *nextAddr;
 getifaddrs(&addrs);
 nextAddr = addrs;
 while(nextAddr){
   fprintf(stdout, "%s\' FLAGS: %u\n", nextAddr->ifa_name, nextAddr->ifa_flags);
   nextAddr = nextAddr->ifa_next;
 }
}

1 个答案:

答案 0 :(得分:1)

它们不同的原因是因为ifconfig决定以十六进制格式打印标志。尽管内核将此值作为int或short等传递给它...无论如何......简单的方式来看它:fprint("Flags: %x", flags);