
來自 Linux 程式設計介面
在互動式 shell 中,這三個檔案描述符 0、1 和 2 通常指的是執行 shell 的終端。
「運行 shell 的終端」是否是指互動式 shell 所屬會話的控制終端?
如果是,如果 shell 的會話沒有控制終端機怎麼辦?
當從其父進程建立 shell 時,在以下每種情況下,shell 是否會自動在檔案描述符 0、1 和 2 與終端之間建立連接(從 shell 的父進程繼承):
如果「shell 運作所在的終端」或控制終端已在非 0、1 和 2 的檔案描述符處開啟?
如果檔案描述符 0、1 和 2 已經連接到一個不是「運行 shell 的終端」或控制終端的檔案?
- 如果引用中的 shell 是非互動式的怎麼辦?
謝謝。
順便說一句,假設「shell」是 POSIX 或 bash。
答案1
不。
getty
這是透過的各種實現來完成的open-controlling-tty
、由 SSH 伺服器的分叉 pty-slave-side 部分、由 GUI 終端模擬器的分叉 pty-slave-side 部分或類似的部分。
請注意引用的文字沒有任何影響shell 會執行此操作。你根據憑空捏造的錯誤前提提出了一大堆問題。
你知道它getty
是這樣的,因為你在“登入引導的進程會話什麼時候啟動?”,與這個問題同時寫的。
進一步閱讀
- getty 和 Agetty 和有什麼不一樣?
- 「askfirst」 getty 與 systemd(「按 Enter 鍵啟動此控制台」)
- 喬納森·德博因·波拉德。 」虛擬終端登入」。小吃指南。軟體.
- 喬納森·德博因·波拉德。 」真實終端登入」。小吃指南。軟體.