/ proc / PID文件的格式

时间:2012-11-24 10:58:16

标签: linux process

我想从/proc目录中检索一些流程信息,我的问题如下:/proc/PID中的文件是否有标准格式?
例如,第一行中有proc/PID/status个文件Name:'\t'ProcName。我可以在其他地方使用空格而不是\t或类似的那样来满足此文件吗?

1 个答案:

答案 0 :(得分:5)

首先,Linux中/proc的文档在Documentation/filesystems/proc.txt的Linux源代码中提供。如果要使用procfs,这应该是你要考虑的第一个地方。可悲的是,AFAICS没有提到确切的记录格式。

要看的第二个地方是procps来源(即提供ps工具的包)。在那里你可以找到:

colon = strchr(S, ':');
if(unlikely(!colon)) break;
if(unlikely(colon[1]!='\t')) break;

这意味着ps依赖于:\t。因此,您可以假设所有当前的Linux内核都使用此格式。此外,我怀疑微小的变化(比如用其他东西替换\t)会被认为是重要的,足以破坏与旧版ps工具的兼容性。

那就是说,你接受的东西通常更自由。考虑到该文件的特定内容,您可以假定冒号是字段分隔符,并删除其后面的任何空格。如果您使用的是shell脚本,则常规字段分隔就足够了。

最后,我想提几点:

  1. status文件应该是人类可读的。因此,程序通常更好地读取stat文件,而不是设计为面向机器的文件。
  2. 我只在这里考虑Linux(基于标签)。不同的系统可能有一些不同的/proc格式。
  3. 如果您正在编写C程序(编辑器添加了 shell 标记),则应考虑使用libprocps附带的procps库而不是阅读手工文件。这样,您就可以避免重新发明轮子并直接依赖特定格式。