我想从中检索一些流程信息/proc
目录,我的问题如下: 中的文件是否有标准格式/proc/PID
?
例如,有这个proc/PID/status
文件与Name:'\t'ProcName
在第一行。我可以在其他地方用空格代替这个文件吗\t
或者类似的东西?
首先,有关文档/proc
Linux 中的 Linux 源代码中提供了Documentation/filesystems/proc.txt http://www.kernel.org/doc/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
tool.
也就是说,你通常可以更加自由地接受你所接受的东西。考虑到该文件的具体内容,您可以假设冒号是字段分隔符,并去除其后面的任何空格。如果您使用 shell 脚本,常规字段分隔就足够了。
最后,我想强调几点:
- The
status
文件应该是人类可读的。因此,程序通常最好阅读stat
文件,而不是被设计为面向机器的。
- 我在这里只考虑Linux(基于标签)。不同系统可能略有不同
/proc
format.
- 如果您正在编写 C 程序(shell标签是由编辑器添加的),您应该考虑使用
libprocps
附带的库procps
而不是手动读取文件。这样,您就可以避免重新发明轮子并直接依赖特定格式。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)