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

Why are ifconfig's FLAGS values different from each interface's ifa_flags value and how can I get ifconfigs values?

运行 以下代码打印出每个接口的 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;
 }
}

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