请问程序中读取/proc文件中的值
如题,比如,我想请取/proc/net/ip_conntrack,现在我的办法就是open这个文件,然后一行一行地读取,然后一个字符串一个字符串的分析……
我想请问,内核中有没有什么接口,可以直接去读,不用这么原始而且容易出错的办法呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
谢谢,正在参考中,目前是纯粹的字符串拆分,这样效率实在太差劲了,过了五一,你的大头贴换了呀,挺帅的!
可以参考一下 net/ipv4/netfilter/ip_conntrack_standalone.c 中 sprintf 给 proc 的实现
其实我主要就是想问读ip_conntrack,以分析Netfilter的连接跟踪表方面的问题,手工分析起,好麻烦喔,有接口就好了,呵呵!
还有个更傻的方法
system("cat /proc/文件名 > /tmp/临时文件名");
fopen("/tmp/临时文件名");
/proc里面的东西大小不停变化,直接读心理感觉总是不太放心,
存成文件就固定了
不过要记得删除临时文件
没有拉,top的源代码是只读一次,用一个足够大的buffer存储文件信息,然后解析,这样比较好,我也是这么做的,推荐!
[ 本帖最后由 duanjigang 于 2006-5-5 18:01 编辑 ]
这个方法并不原始,也并不容易出错。
所谓的“原始而且容易出错”只是你的错觉罢了……
不管怎样,你浏览一下 man 2 sysctl 总没有坏处呗……
答案是没有.