我想从/proc
目录中检索一些进程信息,我的问题如下:是否有一个标准的文件格式/proc/PID
?
例如,第一行中有此proc/PID/status
文件Name:'\t'ProcName
.我可以在其他地方使用空白而不是\t
像这样的文件来满足这个文件吗?
首先,/proc
Linux中的文档是在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脚本,则常规字段分隔就足够了.
最后,我想提几点:
status
文件应该是人类可读的.因此,程序通常更好地读取stat
文件,而不是设计为面向机器的文件./proc
格式.libprocps
随附的库而procps
不是手动读取文件.这样,您就可以避免重新发明轮子并直接依赖特定格式.