接受 safe/future-proof 解析 /proc/%d/stat 的方式?
Accepted safe/future-proof way to parse /proc/%d/stat?
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] = '[=10=]';
S = tmp + 2; // skip ") "
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] = '[=10=]';
S = tmp + 2; // skip ") "