Обновлено:

Внутренняя команда не выполнялась как отдельный процесс при обычном выполнении, потому что она выполнялась с помощью оболочки.

но какие шаги выполняет bash, если встроенный процесс был выполнен в фоновом режиме.

  1. Как этот процесс выполняется без отдельного файла.

    1. Создает ли файл с кодом этого во встроенной команде, а затем выполняет его?
    2. Или bash выполняет эти команды как преобразование их в bash -c "cd" перед выполнением?
  2. почему некоторые встроенные команды выходили мгновенно, не ожидая ввода, например read &

  3. Почему Bash сначала предоставляет PID, прежде чем проверять, существует ли команда (файл).

благодарю вас,

1 ответ1

3

Как вы, кажется, понимаете, встроенные функции оболочки, такие как echo , обрабатываются запущенной оболочкой и поэтому не требуют запуска нового процесса на переднем плане (обычно).

Однако, если вы отправите их в фоновый режим, они должны управляться отдельной оболочкой и, следовательно, запустят новый процесс оболочки с соответствующей командой. Это должно быть довольно легко заметить в bash, так как при отправке процесса в фоновом режиме будет отображаться новый идентификатор процесса рядом с номером задания, например:

$ echo 'hi' &
[1] 19536
hi

В этом случае процесс 19536 является новым экземпляром bash.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .