Linux
為什麼偽終端和 X 寫入不同的特殊文件
為什麼偽終端從
/dev/pts/{number}
(和)X-session 推斷擊鍵從 推斷擊鍵/dev/input/by-id/{keyboard-device-name}
?我了解偽終端在 X-session 之上執行。
- 為什麼偽終端如此特別,以至於它有一個單獨的文件位置來讀取/寫入隨後將顯示在 UI 終端視圖中的數據?
- 核心如何知道偽終端和其他應用程序之間的區別,以便它寫入 2 個不同的文件位置?
為什麼偽終端如此特別,以至於它有一個單獨的文件位置來讀取/寫入隨後將顯示在 UI 終端視圖中的數據?
因為在您的桌面上有兩種完全不同的使用者輸入視圖。
顯示伺服器(X11 或您的 Wayland 合成器)通過(至少在使用時)處理來自硬體的所有輸入。X11 和 Wayland 客戶端通過各自的協議接收相應的事件。
/dev/input/...``libinput
不是 X11 和 Wayland 客戶端但需要接收輸入的程序使用某種形式的仿真執行。終端仿真器就是這樣一種仿真:顧名思義,它仿真一個終端,並通過涉及設備的偽終端來幫助實現這一點。
/dev/pts/...
因此,當您在終端仿真器中執行程序時,您的擊鍵遵循以下路徑:
鍵盤→核心→顯示伺服器→終端仿真器(作為更高級別的事件)→偽終端→程序
這為最終程序提供了一種錯覺,即它正在執行,其輸入(和輸出)連接到終端。
核心如何知道偽終端和其他應用程序之間的區別,以便它寫入 2 個不同的文件位置?
它不知道應用程序以及它們接收輸入的位置。它知道鍵盤並通過輸入設備從中提供事件;另外,它知道偽終端,並允許控製程序通過它們傳輸事件。