要检查链接是否已启动,请尝试以下操作.它没有root权限.

#include // printf

#include // strncpy

//#include // AF_INET

#include // SIOCGIFFLAGS

#include // errno

#include // IPPROTO_IP

#include // IFF_*, ifreq

#define ERROR(fmt, ...) do { printf(fmt, __VA_ARGS__); return -1; } while(0)

int CheckLink(char *ifname) {

int state = -1;

int socId = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);

if (socId < 0) ERROR("Socket failed. Errno = %d\n", errno);

struct ifreq if_req;

(void) strncpy(if_req.ifr_name, ifname, sizeof(if_req.ifr_name));

int rv = ioctl(socId, SIOCGIFFLAGS, &if_req);

close(socId);

if ( rv == -1) ERROR("Ioctl failed. Errno = %d\n", errno);

return (if_req.ifr_flags & IFF_UP) && (if_req.ifr_flags & IFF_RUNNING);

}

int main() {

printf("%d\n", CheckLink("eth0"));

}

如果设置了IFF_UP,则表示接口已启动(请参阅ifup).如果设置了IFF_RUNNING,则接口已插入.

我也尝试使用ethtool ioctl调用,但是当gid不是root时它失败了.但只是为了日志:

...

#include // __u32

#include // ETHTOOL_GLINK

#include // SIOCETHTOOL

...

int CheckLink(char *ifname) {

...

struct ifreq if_req;

(void) strncpy( if_req.ifr_name, ifname, sizeof(if_req.ifr_name) );

struct ethtool_value edata;

edata.cmd = ETHTOOL_GLINK;

if_req.ifr_data = (char*) &edata;

int rv = ioctl(socId, SIOCETHTOOL, &if_req);

...

return !!edata.data;

}

linux中网络怎么检查,如何在Linux中检查以太网?相关推荐

  1. linux建立文件的符号链接,如何在Linux中创建符号链接[完整指南]

    Linux中的符号链接是什么,为什么使用它? 符号链接(也称为符号链接或软链接)是一种特殊类型的文件,它只是指向另一个文件或目录,就像Windows中的快捷方式一样,创建符号链接就像为实际文件创建别名 ...

  2. 检测linux服务器的使用情况,如何在Linux服务器中检查内存使用情况

    我们在排除服务器系统或应用程序速度减慢或行为不正常的问题时,首先要检查的是系统内存使用情况. 本文介绍了如何在Linux系统服务器中使用几个不同的命令来检查RAM的使用情况. 1.free命令 fre ...

  3. linux 怎么设置静态ip,如何在Linux中设置静态IP地址和配置网络

    如果您是Linux系统管理员,那么当您需要在系统上配置网络时,就会出现时间. 与可以使用动态IP地址的台式机不同,在服务器基础架构上,您需要设置静态IP地址(至少在大多数情况下).IP地址 :192. ...

  4. linux如何配置网络设置_如何在Linux中配置网络

    linux如何配置网络设置 将Linux计算机连接到网络非常简单,除非不是这样. 在本文中,我讨论了基于Red Hat的Linux发行版的主要网络配置文件,并介绍了两个网络启动服务:古老的网络启动和有 ...

  5. linux 更改ssh端口_如何在Linux中更改SSH端口-简易指南

    linux 更改ssh端口 The default port on SSH is 22. But for security reasons, it's a good idea to change SS ...

  6. linux终端如何连接wifi,如何在 Linux 终端中连接使用 WiFi?

    导读 在本教程中,你将学习如何在 Ubuntu 中从终端连接到无线网络.如果你在使用 Ubuntu 服务器时,无法访问常规的桌面环境,这将对你非常有帮助. 我的家用电脑主要使用桌面 .我也有多台 Li ...

  7. linux命令查硬盘wwn,如何在Linux中查找HBA卡的WWN,WWNN和WWPN号

    在Linux / Unix操作系统中,有几种方法/命令来确定光纤通道(FC)HBA的WWN及其详细信息. 什么是SAN? 大多数IT行业使用SAN(存储区域网络)和fas I/O来获得更高的性能. S ...

  8. linux c ip数据包,如何在Linux上的C / C ++中使用ipv6 udp套接字进行多播?

    (英语不是我的母语,不用担心某些句子是否很奇怪:). 我正在开发 PONG游戏, 并且通过创建一些类来帮助我管理窗口,事件-和 网络, 因为我在游戏中添加了 LAN功能 ,但是当前您必须输入您想与之联 ...

  9. linux python开发环境_如何在Linux系统中搭建Python编程环境

    1 在大多数的Linux系统中,基本上都默认安装了Python,也就是说,在Linux的系统中基本上是不需要安装什么软件,就可以使用Python. 下面以ubuntu操作系统为例,看看如何在Linux ...

  10. linux命令行的操作符,如何在Linux命令行中进行基本的数学运算

    原标题:如何在Linux命令行中进行基本的数学运算 Linux bash或命令行允许您执行基本和复杂的算术和布尔运算.像expr,jot,bc和factor等命令可以帮助您找到复杂问题的最优数学解决方 ...

最新文章

  1. 微软沈向洋:写给AI新潮流——人工智能创作的五点建议
  2. 大数据领域75个核心术语讲解!
  3. C - Heavy Transportation POJ - 1797
  4. 网络推广产品中网站的标题如何设置更利于SEO?
  5. 删除联想OEM分区的方法 推荐!
  6. 滴滴算法大赛算法解决过程 - 方案设计
  7. QT的QMediaPlaylist类的使用
  8. mysql报错排查总结
  9. 80486微型计算机的字长,80486,80586等是什么样的电脑?
  10. 黑马程序员——程序结构
  11. kingbase自带的驱动在哪_为什么别人家的广告语都能自带BUG?
  12. 8.Springcloud的Feign嵌入Ribbon实现接口式调用(改变restTemplate和Ribbon的调用方式)...
  13. 火星开发的价值_发现“火星”岩石密度比预想更低,火星探测开发的“九大价值”...
  14. socket发送http请求
  15. 快手did did_gt edid的注册过程
  16. javasript |仿百度换肤效果
  17. ssm搭建整合,这一篇你直接拷走就是一个搭好的框架,前后端可分离,可不分离
  18. 应届生如何成功进入产品经理岗位
  19. 微信小程序iconfont不显示解决
  20. activity组任务使用

热门文章

  1. 软件开发中的资源控制问题学习
  2. 程序代码传输工具:飞秋官方下载
  3. 一条来自 GitHub 重磅消息!
  4. 首届React开发者大会于2018年8月18日在广州举办
  5. 个人开发者福利:没有注册公司,如何发布自己的小程序
  6. java get cookies_Java Cookie.getDomain方法代码示例
  7. leetcode:剑指offer----二维数组中查找
  8. 新录制了一个Cytoscape整合富集分析和基因表达的网络图绘制
  9. 明天 | 2021单细胞组学国际研讨会(线上)【附直播链接】
  10. 科研分享|一个论文关系网络可视化网站