如何在不轮询内核的情况下在C程序中监视NIC状态(上/下)?

胜利者:

现在,我需要实时获取NIC的状态(向上或向下)。这意味着当NIC在阻塞循环中上下时,我必须捕获内核中断。

我的第一个愚蠢的方法是检查/ sys / class / net / eth0 / operstate或使用ioctl在循环中每100毫秒获取一次ifflag。但是100毫秒对于应用程序重新路由流量太长,而且每100毫秒轮询一次内核不是一个好主意。

一旦我注意到可以在块模式下监视文件inotify函数。但是不幸的是,它不能监视/ sys / class / net / eth0 / operstate文件,因为/ sys位于RAM中而不是磁盘中。

那么,除了编写内核模块以块模式捕获C程序中的NIC中断(上/下)之外,还有什么方法可用吗?

gby:

是的,打开一个netlink套接字,并收听RTMGRP_LINK(网络接口创建/删除/上/下事件)多播组。

网络链路手册页这里有一个具体的例子来做到这一点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不设置 React 应用程序状态的情况下在组件中执行更改?

如何在不构建弹簧上下文的情况下在 JUnit 5 测试中填充 yml 属性文件

如何在不弹出元素和循环的情况下在 C++ 中打印整个堆栈?

如何在不冻结应用程序的情况下在 C# 桌面应用程序中快速处理多个文件

如何在不破坏 Rust 工具链的情况下在 XCode 中测试 iOS 应用程序?

如何在没有Grub Customizer的情况下在GRUB中设置默认内核?

如何在不轮询的情况下获取数据?

如何在不使用请求上下文的情况下在flask中呈现模板

C-如何在不缓冲的情况下轮询()输入?

如何在不运行连续循环的情况下在循环中运行某些 python 程序

如何在不滚动的情况下在移动Web应用程序上启动网页

如何在不更改图像尺寸的情况下在IOS(Iphone / Ipad)中设置JPG的DPI信息(目标C)

如何在不更改图像尺寸的情况下在IOS(Iphone / Ipad)中设置JPG的DPI信息(目标C)

Java:如何在不覆盖 main 的情况下在类中创建无限循环

如何在不丢失格式的情况下在Lync中粘贴空间格式的表?

如何在不启动php部分的情况下在HTML中回显'<?php'

如何在不区分大小写的情况下在Java中拆分字符串?

如何在不覆盖初始系列的情况下在 HighCharts 中动态更改数据系列?

如何在不破坏格式的情况下在 JSDoc 中编写包含 javascript 注释的模板文字?

如何在不循环的情况下在多维数组中查找值?

如何在不编写显式for循环的情况下在jQuery操作中引用结果索引?

如何在不填充区域的情况下在python中绘制轮廓图?

如何在不编写代码的情况下在Amazon sqs中实现指数补偿

如何在不违反继承安全规则的情况下在.NET 4+中实现ISerializable?

如何在不导入任何库的情况下在 python 中实现单词到 PDF 的转换?

如何在不更改当前目录的情况下在文件夹中运行命令?

如何在不破坏默认行为的情况下在Python中重写__getattr__?

如何在不包装的情况下在div中绝对定位Bootstrap导航栏

如何在不更改任何引脚的情况下在Linux中打开串行端口?