Второе поле Linux /proc/%d/stat
- это имя команды, заключенное в круглые скобки, которое может содержать круглые скобки как часть команды. Каков правильный способ справиться с этим при анализе псевдофайлов stat
? Моя склонность заключалась бы в том, чтобы найти последний ')'
(например, используя strrchr
для всего содержимого файла), но я обеспокоен тем, что это не может быть перспективным против добавления новых полей в конце. Есть ли какая-либо документация о правильном способе решения этой проблемы?Принят безопасный/перспективный способ анализа/proc /% d/stat?
1
A
ответ
2
В поисках последнего) это лучший способ сделать это и, скорее всего, будет надежным в будущем.
strrchr
используется для синтаксического анализа в procps source (в пс семейства функций, 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 ") "
Спасибо! Я думаю, что цитата отвечает на этот вопрос. +1 и принято. –