2015-04-27 4 views
1

Второе поле Linux /proc/%d/stat - это имя команды, заключенное в круглые скобки, которое может содержать круглые скобки как часть команды. Каков правильный способ справиться с этим при анализе псевдофайлов stat? Моя склонность заключалась бы в том, чтобы найти последний ')' (например, используя strrchr для всего содержимого файла), но я обеспокоен тем, что это не может быть перспективным против добавления новых полей в конце. Есть ли какая-либо документация о правильном способе решения этой проблемы?Принят безопасный/перспективный способ анализа/proc /% d/stat?

ответ

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 ") " 
+0

Спасибо! Я думаю, что цитата отвечает на этот вопрос. +1 и принято. –