Как определяет ли Linux «имя» процесса / proc / PID / stat?

Если вы не возражаете что пользователь может выполнять произвольные команды, включая подстановку команд $ (…) , вы можете передать строку во встроенную функцию eval . Обратите внимание, что eval ожидает фрагмент оболочки, и если входные данные содержат кавычки, они могут вызвать синтаксические ошибки. (Относительно) простой способ справиться с кавычками - использовать здесь документ для выполнения замен. Вы все еще зависите от незавершенной подстановки переменной или команды (например, $ (foo ).

IFS= read -r -p "Enter input: " input
eval "string=\$(cat <<EOF
_${input}
EOF
)"
string=${string#_}
5
28.04.2016, 19:48
1 ответ

Это связано с Linux:

Когда программа запускает другую, она должна использовать имя исполняемого файла в качестве параметра командной строки $0, но может поступить иначе. Поле Name в /proc/PID/status всегда устанавливается ядром на имя исполняемого файла (но усеченное до 15 символов).

Само приложение может изменить имя. Более длинное имя можно получить из /proc/PID/cmdline (читать до первого нулевого байта).

3
27.01.2020, 20:41

Теги

Похожие вопросы