随笔 - 171  文章 - 257  trackbacks - 0
<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(33)

随笔分类(225)

随笔档案(171)

相册

技术

友情链接

最新随笔

搜索

  •  

积分与排名

  • 积分 - 441183
  • 排名 - 48

最新随笔

最新评论

阅读排行榜

评论排行榜

    最近要做一个jni给java来采集系统信息. 支持linux和windows
    采集的内容包括. 系统所有进程名, cpu占用率, 内存占用率, 系统内存大小, 已用内存大小, 可用内存大小, 分区大小, 已用分区磁盘空间, 可用分区磁盘空间. 系统信息. cpu核心总数..
    在windows下已经使用系统提供的api一一完成并经过调试. linux为了保证代码的统一. 也用了jni的方式

    linux下我老以为会有类似的api提供. 翻了半天google, 最终决定还是从/proc文件系统开始来.
不过/proc方式的好处就是不论哪种语言. 只要他有操作文件的能力. 都可以获得这些信息. 而不局限于c或者c++

    要点1. /proc不是物理文件系统. 他是对内存数据的映射, 是驱动留给开发者和使用者的接口, 所以不管你什么时候用ls指令也好, 用stat来读 st_size也好. 他的大小都是0字节.
    要点2. 由于是vfs, 不要试图往/proc中扔文件或者目录

    /proc目录中. 有不少信息. 我这次项目涉及到如下

    /proc/stat      //实时的系统信息, 我感兴趣的主要是cpu负载数据
    /proc/loadavg   //一段时间内 cpu负载的平均数 以及最近一次的pid
    /proc/cpuinfo   //cpu信息 频率 核心 支持特性
    /proc/version   //系统内核版本  系统发行版本 gcc版本

    /proc目录下每个以数字命名的子目录都代表一个进程, 目录名则是他的pid
    /proc/(pid)/cmdline  该进程启动时的命令,  系统核心进程应该是空的
    /proc/(pid)/stat     里面记录着pid, 进程名(short_cmd)等等
    /proc/(pid)/environ  记录着系统执行的环境变量

其他的改天碰到再看吧.

posted on 2008-10-24 14:16 Khan 阅读(2435) 评论(1)  编辑 收藏 引用 所属分类: GCC/G++跨平台开发

FeedBack:
# re: linux /proc/文件系统. 2008-10-25 16:49 金山词霸2008
proc文件系统使用很有价值的。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理