/ proc/PID文件的格式

Nel*_*yan 4 linux process

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

Mic*_*rny 6

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

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

colon = strchr(S, ':');
if(unlikely(!colon)) break;
if(unlikely(colon[1]!='\t')) break;
Run Code Online (Sandbox Code Playgroud)

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

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

最后,我想提几点:

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