我目前正在开发一个需要大量系统和进程信息的应用程序,其中一些只能通过 /proc 获得,并且我有一些关于访问结构的一般性问题。
该应用程序将在 Linux(内核 >= 2.6)上运行,而不是在任何其他 Unix 风格的操作系统上运行。它应该可以访问 /proc 中的任何数据,我不能说现在需要什么,因为规范还不清楚,但是整个 /proc 目录与应用程序相关。
首先:是否有一个很好的文档来涵盖从内核版本到内核版本添加/删除的所有功能?我特别好奇的一件事是各个文件的格式。我可以认为这是理所当然的吗?它在内核版本之间会发生变化吗?
连接基于内核的解析过程根本不是问题,只是我找不到任何关于版本之间变化的好文档,这可以帮助我提前捕获解析错误。
另外:是否有可以通过内核选项激活/停用的功能的明确列表(当然 /proc-feature 本身除外)?I'm looking for a list of files / directories that only exist with the appropriate options being set in the kernel.
作为我正在考虑的一个例子,这是一个指向 proc 手册页 (http://linux.die.net/man/5/proc) 的链接,其中包含很多很好的信息,例如,一些选项包括最早的它们可用的内核版本,其中一些包括是否需要加载模块。这并没有描述所有信息的输出格式,如果我想解析它(例如,如果它在所有内核版本中都是一致的或在某些时候发生变化),这是我需要的。
我想知道的第二件事是如果被查询的进程在被查询时死亡会发生什么。我的时间间隔是多少?例如,如果我要获取读取所有结构的进程列表,并一个接一个地解析它们,如果我的进程 x 在我读取它之前就死了会发生什么?即使我检查该目录是否存在,它仍然可能在稍后的应用程序调用中消失。
最后但并非最不重要的一点:有没有没有安装 proc 的主要发行版?
据我了解,很多常用工具都是基于 /proc 接口的lsmod
or free
,所以我猜我可以期望 /proc 几乎总是存在。