不。

不。

來自 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是這樣的,因為你在“登入引導的進程會話什麼時候啟動?”,與這個問題同時寫的。

進一步閱讀

相關內容