在Linux上,X伺服器如何與特定的tty(例如tty7)建立關係,以便僅當該tty位於前台時X伺服器才能接收輸入並在螢幕上繪圖?這是如何執行的?
(我之前在 Stack Overflow 上以下面所示的形式發布了這個問題,該問題已關閉。)
我有幾個問題,當有人說“X 伺服器在 /dev/tty7 上運行”時,這意味著什麼。我對其工作原理做了一些猜測,我希望有人能告訴我以下陳述是真是假。
- /dev/tty7 通常是 Xorg 的控制終端。
- 儘管 tty7 是 Xorg 的控制終端,但它並不以任何有意義的方式「控制」Xorg。
- Xorg 透過輪詢 /dev/input/... 或類似的方式直接接收鍵盤和滑鼠輸入,而不是透過讀取 /dev/tty7。儘管如此,/dev/tty7 也會接收擊鍵,您可以透過在終端模擬器中執行「xxd -p /dev/tty7」來看到(例如)。
- Xorg 使用某些特定於硬體的介面(例如驅動程式建立的某些裝置檔案或記憶體的 I/O 映射區域)在螢幕上繪圖,而不是透過寫入 /dev/tty7。
- 當 Xorg 設定視訊模式時,tty 驅動程式會自動停止在螢幕上繪製。這就是為什麼當您按下某個鍵或將字串回顯到 /dev/tty7 時,您看不到它出現在螢幕上。
- 即使 tty7 在後台,Xorg 也會透過 /dev/events 接收鍵盤和滑鼠輸入,但除非 tty7 在前台,否則它會忽略它。
- 無論 Xorg 在螢幕上繪製什麼,只有當 tty7 位於前台時才在監視器上可見。
- Xorg初始化視訊時(設定視訊模式等),是因為tty7在前台,所以設定只在tty7上生效,其他終端不生效。