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



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

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

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

最新更新