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