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

Dyl*_*ens 16 linux network-programming

我想确定网卡是否已启用,启动和插入.基本上,我想知道网卡是否可以正常工作.我需要使用C++程序提供此信息,并希望在网络无法正常工作时显示错误消息.如果可能,我想避免使用shell命令来确定此信息.

EFr*_*aim 16

您可以查看/sys/class/net/eth0/operstateeth0是您的界面,看看它是否已启动.

看看/sys/class/net/eth0/carrier是否有载体.

虽然我猜执行ifconfig和朋友会给你更多兼容*BSDs.


puc*_*chu 6

  1. 打开AF_NETLINK插座
  2. 将其绑定到sockaddr_nlnl_groups = RTMGRP_LINK
  3. 发送消息RTM_GETLINK到内核
  4. 在套接字上进行轮询/轮询以读取RTM_NEWLINKRTM_DELLINK发送消息
  5. 您将收到初始接口列表及其将来的更改