2012-11-24 37 views
4

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

回答

5

首先,Linux中的/proc文档在Linux源代码中提供,文档号为Documentation/filesystems/proc.txt。如果要使用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标记),则应考虑使用procps附带的libprocps库,而不是手动读取文件。这样,您可以避免重新发明轮子并直接依赖特定格式。
+0

谢谢,帮了我很多 –

+0

“stat”真的好多了,谢谢。可悲的是,我的工作重点是重新发明轮子:) –