gpt4 book ai didi

c - 调用 getifaddrs() 时 ifa_addr 何时会为 NULL?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:33:58 29 4
gpt4 key购买 nike

我使用了 getifaddrs() 函数来获取接口(interface)的 IP 地址。从手册页,我知道:

The ifa_addr field references either the address of the interface or the link level address of the interface, if one exists, otherwise it is NULL. (The sa_family field of the ifa_addr field should be consulted to deter- mine the format of the ifa_addr address.)

我的问题是:ifa_addr 怎么可能是 NULL?在我看来,每个接口(interface)都有其地址,不是吗?

我google了一晚上,发现的每一页都只是说“这个字段可能包含一个NULL指针”,没有更多的解释......

我真的不知道如何搜索以获得详细信息,我尝试了很多关键词,比如“getifaddrs ifa_addr NULL”...但是谷歌只给我看 getifaddrs() 函数的手册页...

但是,我确实只找到了一页,这给了我更多的信息。一点点!

http://sourceforge.net/p/bonding/discussion/77913/thread/03f93486/

那么,谁能告诉我一些关于这个主题的更详细的信息?

最佳答案

如前所述,对于没有分配任何地址的接口(interface),ifa_addr 字段可能为 NULL。在实践中看到这一点的一个简单方法是添加一个隧道接口(interface):

$ sudo ip tuntap add tun42 mode tun

这将创建一个没有任何地址的隧道接口(interface):

$ ifconfig -a
tun42: flags=4240<POINTOPOINT,NOARP,MULTICAST> mtu 1500
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)

$ ip link show
5: tun42: <POINTOPOINT,MULTICAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 500
link/none

关于c - 调用 getifaddrs() 时 ifa_addr 何时会为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22767155/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com