不。

不。

来自 Linux 编程接口

在交互式 shell 中,这三个文件描述符 0、1 和 2 通常指的是运行 shell 的终端。

  1. “运行 shell 的终端”是否是指交互式 shell 所属会话的控制终端?

    如果是,如果 shell 的会话没有控制终端怎么办?

  2. 当从其父进程创建 shell 时,在以下每种情况下,shell 是否会自动在文件描述符 0、1 和 2 与终端之间创建连接(从 shell 的父进程继承):

    • 如果“shell 运行所在的终端”或控制终端已在非 0、1 和 2 的文件描述符处打开?

    • 如果文件描述符 0、1 和 2 已经连接到一个不是“运行 shell 的终端”或控制终端的文件?

  3. 如果引用中的 shell 是非交互式的怎么办?

谢谢。

顺便说一句,假设“shell”是 POSIX 或 bash。

有关的我们如何断开文件描述符与任何文件的连接?

答案1

不。

getty这是通过的各种实现来完成的open-controlling-tty、由 SSH 服务器的分叉 pty-slave-side 部分、由 GUI 终端仿真器的分叉 pty-slave-side 部分或类似的部分。

请注意引用的文字没有任何影响shell 会执行此操作。你根据凭空产生的错误前提提出了一大堆问题。

你知道它getty是这样的,因为你在“登录引导的进程会话什么时候启动?”,与这个问题同时写的。

进一步阅读

相关内容