/proc/PID files' format

5

我希望能从/proc目录中检索一些进程信息,我的问题是:在/proc/PID目录中的文件是否有标准格式?
例如,proc/PID/status文件的第一行为Name:'\t'ProcName。我是否可以在其他地方遇到用空格代替\t的此类文件呢?

1个回答

6
首先,关于Linux中的/proc文档,可以在Linux源代码中,在Documentation/filesystems/proc.txt中找到。如果要使用procfs进行工作,这应该是您首先查看的地方。不幸的是,据我所知,它没有提到确切的记录格式。
第二个地方可以查看procps源代码(也就是提供ps工具的软件包)。在那里,您可以找到:
colon = strchr(S, ':');
if(unlikely(!colon)) break;
if(unlikely(colon[1]!='\t')) break;

这意味着ps依赖于有:,因此,您可以假设所有当前的Linux内核都使用这种格式。此外,我怀疑小的更改(比如用其他东西替换\t)是否足以被认为是重要的而打破与旧版本的ps工具的兼容性。
话虽如此,您通常可以更自由地接受内容。考虑到该文件的特定内容,您可以假设冒号是字段分隔符,并删除其后的任何空格。如果您正在使用shell脚本,则正则字段分隔符应该足够。
最后,我想提出几点:
  1. status文件应该是易读的。因此,程序通常更好地读取设计为面向机器的stat文件。
  2. 我只考虑Linux(基于标签)。不同的系统可能会有稍微不同的/proc格式。
  3. 如果您正在编写C程序(编辑器添加了shell标记),您应该考虑使用procps附带的libprocps库,而不是手动读取文件。这样,您就避免了重新发明轮子并直接依赖于特定格式的问题。

"stat" 真的好多了,谢谢。可惜我的工作重点是重新发明轮子 :) - Nellie Danielyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接