运行以下代码打印出每个接口的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;
}
}
答案 0 :(得分:1)
它们不同的原因是因为ifconfig决定以十六进制格式打印标志。尽管内核将此值作为int或short等传递给它...无论如何......简单的方式来看它:fprint("Flags: %x", flags);