Linux

為什麼偽終端和 X 寫入不同的特殊文件

  • December 16, 2020

為什麼偽終端從/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 個不同的文件位置?

它不知道應用程序以及它們接收輸入的位置。它知道鍵盤並通過輸入設備從中提供事件;另外,它知道偽終端,並允許控製程序通過它們傳輸事件。

引用自:https://unix.stackexchange.com/questions/624694