当内置命令作为后台进程执行时,bash 上会发生什么?

当内置命令作为后台进程执行时,bash 上会发生什么?

更新:

内部命令是通过 shell 完成的,因此在正常执行中并未作为单独的进程完成。

但是如果内置进程在后台执行,bash 会执行哪些步骤。

  1. 该过程如何在没有单独文件的情况下执行。

    1. 是否创建一个包含内置命令代码的文件然后执行它?
    2. 或者 bash 先将这些命令转换为 bash -c "cd" 然后再执行?
  2. 为什么一些内置命令会立即退出而不等待任何输入,例如 read&

  3. 为什么 bash 在检查命令(文件)是否存在之前首先提供 PID。

谢谢你,

答案1

正如您理解的那样,shell 内置函数(例如)echo由正在运行的 shell 处理,因此不需要在前台启动新进程(通常)。

但是,如果将它们发送到后台,则它们需要由不同的 shell 控制,因此将使用相关命令启动一个新的 shell 进程。这在 bash 中应该很容易观察到,因为在后台发送进程将在作业编号旁边显示新进程 ID,例如:

$ echo 'hi' &
[1] 19536
hi

在这种情况下,进程 19536 是一个新的 bash 实例。

相关内容