Реализуется ли eval путем создания процесса оболочки для оценки следующей команды?

Работающая система Unix будет время от времени создавать временные файлы и каталоги во время нормальной работы.

Простое открытие файла в редакторе или отправка электронного письма могут привести к созданию одного или двух временных файлов, а просмотр веб-страниц может создать и удалить сотни файлов за короткий промежуток времени. Кроме того, графическая среда рабочего стола может выполнять кэширование и другие вещи, которые вы обычно не замечаете, создавая и удаляя временные файлы.

В зависимости от того, какой у вас главный каталог, вы вполне можете охватить каталоги, которые имеют тенденцию сильно меняться, например /tmp и все каталоги в /var, и ваш домашний каталог.

0
19.07.2016, 15:36
2 ответа

Eval не создает новый процесс только для eval.

Eval скорее повторно запускает парсер с конкатенацией eval-аргументов.

Результат этого разбора затем запускается в той же оболочке. Если, однако, аргументы требуют создания под-оболочки для команды, это делается.

Таким образом, основная цель eval - повторный запуск парсера.

2
28.01.2020, 02:13

Попробуйте этот :$$между ''расширяется во время оценки, $$между ""до оценки:

$ eval /bin/echo '$$' "$$"
17899 17899

Так как оба развертываются в одном и том же процессе, eval не запускает подоболочку. Обратите внимание, что я взял функцию echo -без оболочки -.

0
03.05.2021, 18:32

Теги

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