【发布时间】:2023-03-10 17:11:01
【问题描述】:
Linux /proc/%d/stat 文件的第二个字段是括在括号中的命令名称,它本身可能包含括号作为命令的一部分。解析stat 伪文件时处理此问题的正确方法是什么?我的倾向是找到最后一个')'(例如,在整个文件内容上使用strrchr),但我担心这可能无法在最后添加新字段。是否有任何文档说明处理此问题的正确方法?
【问题讨论】:
Linux /proc/%d/stat 文件的第二个字段是括在括号中的命令名称,它本身可能包含括号作为命令的一部分。解析stat 伪文件时处理此问题的正确方法是什么?我的倾向是找到最后一个')'(例如,在整个文件内容上使用strrchr),但我担心这可能无法在最后添加新字段。是否有任何文档说明处理此问题的正确方法?
【问题讨论】:
寻找最后一个 ) 是最好的方法,而且很可能是面向未来的。
strrchr 用于解析procps source(ps 系列函数,ps、top、kill 等)。
S = strchr(S, '(') + 1;
tmp = strrchr(S, ')');
num = tmp - S;
if(unlikely(num >= sizeof P->cmd)) num = sizeof P->cmd - 1;
memcpy(P->cmd, S, num);
P->cmd[num] = '\0';
S = tmp + 2; // skip ") "
【讨论】: