Как будет выглядеть диаграмма для (ls)?

Как будет выглядеть диаграмма для (ls)?

Это диаграмма того, что происходит после входа lsв bash и его выполнения: введите описание изображения здесь

первая часть показывает ситуацию до lsисполнения.Башявляется дочерним процессом эмулятора терминалаxtermи у них та же аура, та же среда, что и вокруг них.ххзнаки указывают, что обаXtermиБаш, поскольку процессы «отец» и «сын» обладают идентичным набором переменных окружения.

во второй части показано, что происходит после запуска нового процесса, а именно ls.

  1. Bash порождает дочерний процесс, который является его точной копией, поэтому я назвал егоБаш_с(сокращение от Bash_copy).
  2. Затем,Баш_сзаменяется процессом ls.

Я думаю, что эта диаграмма проста, понятна, интуитивно понятна и недвусмысленна.

Однако я не нарисовал диаграмму для (ls), потому что не знаю, как она выглядит. У меня есть несколько различных сценариев того, как она может выглядеть, но здесь начинается часть вопроса: как будет (ls)выглядеть диаграмма для ? пожалуйста, нарисуйте и прокомментируйте.

решение1

Иерархия процессов для (ls)такая же, как и для ls, то есть → bash → ls, но если вы поместите список команд в скобки: (ls; ls), то bash запустит подоболочку и выполнит команды в этой подоболочке. Результирующая иерархия процессов выглядит так: → bash → bash → ls(два процесса ls запускаются последовательно).

Вы можете визуализировать это, используя cat без аргументов вместо ls:. (cat; cat)Первый процесс cat ожидает ввода, давая вам возможность увидеть, что происходит, используя pstreeили topв другом терминале.

Связанный контент