请问程序中读取/proc文件中的值

发布于 2022-07-20 12:51:19 字数 131 浏览 7 评论 7

如题,比如,我想请取/proc/net/ip_conntrack,现在我的办法就是open这个文件,然后一行一行地读取,然后一个字符串一个字符串的分析……

我想请问,内核中有没有什么接口,可以直接去读,不用这么原始而且容易出错的办法呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

此岸叶落 2022-07-22 20:22:09

原帖由 platinum 于 2006-5-8 12:25 发表
可以参考一下 net/ipv4/netfilter/ip_conntrack_standalone.c 中 sprintf 给 proc 的实现

谢谢,正在参考中,目前是纯粹的字符串拆分,这样效率实在太差劲了,过了五一,你的大头贴换了呀,挺帅的!

顾冷 2022-07-22 20:18:17

可以参考一下 net/ipv4/netfilter/ip_conntrack_standalone.c 中 sprintf 给 proc 的实现

少女七分熟 2022-07-22 07:45:39

原帖由 duanjigang 于 2006-5-5 17:58 发表
没有拉,top的源代码是只读一次,用一个足够大的buffer存储文件信息,然后解析,这样比较好,我也是这么做的,推荐!

其实我主要就是想问读ip_conntrack,以分析Netfilter的连接跟踪表方面的问题,手工分析起,好麻烦喔,有接口就好了,呵呵!

救赎№ 2022-07-22 01:18:12

还有个更傻的方法
system("cat /proc/文件名 > /tmp/临时文件名");
fopen("/tmp/临时文件名");
/proc里面的东西大小不停变化,直接读心理感觉总是不太放心,
存成文件就固定了
不过要记得删除临时文件

忆梦 2022-07-21 21:59:25

没有拉,top的源代码是只读一次,用一个足够大的buffer存储文件信息,然后解析,这样比较好,我也是这么做的,推荐!

[ 本帖最后由 duanjigang 于 2006-5-5 18:01 编辑 ]

不顾 2022-07-21 13:12:54

这个方法并不原始,也并不容易出错。
所谓的“原始而且容易出错”只是你的错觉罢了……

不管怎样,你浏览一下 man 2 sysctl 总没有坏处呗……

世界如花海般美丽 2022-07-21 10:18:10

答案是没有.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文