gpt4 book ai didi

c - 通过C程序获取Linux中的网络接口(interface)类型

转载 作者:太空狗 更新时间:2023-10-29 11:38:42 25 4
gpt4 key购买 nike

如何从 Linux 中的 C 程序获取网络接口(interface)的类型名称?

我尝试使用 getifaddr 访问网络接口(interface),我得到了我需要的一切,除了它的类型名称。有什么想法可以做到吗?

我对 Linux 还是个新手,所以对任何解决方法或示例代码的任何评论都将不胜感激。

编辑

详细说明问题。基本上,在执行 ifconfig 时,我可以获得如下内容:

eth0 Link encap:Ethernet HWaddr 00:0C:29:40:93:9Cinet addr:192.168.154.102 Bcast:192.168.154.255 Mask:255.255.255.0inet6 addr: fe80::20c:29ff:fe40:939c/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:14785 errors:0 dropped:0 overruns:0 frame:0TX packets:429 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:961439 (938.9 KiB) TX bytes:71866 (70.1 KiB)Interrupt:67 Base address:0x2000

这是我的理解,eth0 是接口(interface)名称。虽然可以有多个网络接口(interface)(eth0、eth1、eth2)和多个虚拟接口(interface)(tap0、tap1 等)和无线接口(interface),但它们都是以太网接口(interface)。

loopbacks也一样,lo为接口(interface)名,其接口(interface)为Local Loopback。

所以问题是,我如何使用 C 程序打印出 eth0、tap0、wlan0 属于以太网类型,而 lo -> 属于本地环回类型,而我事先并不知道使用了哪些接口(interface),并且机器中有多少个。

希望我能正确解释这一点。

最佳答案

您可以尝试使用 Netlink 中的 RTNETLINK(12)。参见 Manipulating the Networking Environment Using RTNETLINK举个例子。

关于c - 通过C程序获取Linux中的网络接口(interface)类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14052224/

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