首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Linux上:如何以编程方式确定是否启用并插入了NIC接口?

在Linux上:如何以编程方式确定是否启用并插入了NIC接口?
EN

Stack Overflow用户
提问于 2010-07-10 04:50:36
回答 4查看 19.4K关注 0票数 16

我想确定网卡是否已启用、打开和插入。基本上,我想知道网卡是否可以工作。我需要从C++程序中获得此信息,并希望在网络不能正常工作时显示错误消息。如果可能,我希望避免使用shell命令来确定此信息。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-10 04:53:33

您可以查看/sys/class/net/eth0/operstate,其中eth0是您的接口,以查看它是否处于运行状态。

查看/sys/class/net/eth0/carrier以查看是否有运营商。

不过我猜执行ifconfig和friends会让你对*BSD有更好的兼容性。

票数 16
EN

Stack Overflow用户

发布于 2010-07-10 04:55:23

记住,在Linux上“一切”都是一个文件。

最好的方法是使用安装在/sys上的经过批准的内核<->用户空间通信,即sysfs。网络设备链接在/sys/class/net

如果您希望使用ioctl接口,请查看man netdevice

票数 4
EN

Stack Overflow用户

发布于 2010-07-10 05:59:30

您希望如何识别网卡?您可以尝试查看/etc/udev/rules.d/70-persistent-net.rules,它将硬件MAC地址映射为好用的名称(如eth0)。

然后,当您有了更好的名称时,您可以运行ethtool eth0来确定它是否物理连接(最后一行),运行ifconfig eth0来确定它是否在运行(查找"UP BROADCAST..."),以及它是否有IP地址。

不过,我想有一些自动库可以做到这一点;您看过周围的地方了吗?我不确定NetworkManager中是否有易于访问的代码,但这应该是一个很好的首选。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3216458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档