Tty

IXON 和 IXOFF tty 屬性有什麼區別?

  • October 7, 2019

具體來說,讓我們用偽終端術語來說話。假設我們有文件描述符masterslave一個偽終端對(假設它是一個控制 tty)。禁用IXONon master(或slave,效果相同)意味著當我們這樣做時write(master, &control_s_code, 1)read(slave, &byte, 1)將獲得此程式碼。同樣的擔憂control_q_code。問題是:禁用有什麼作用IXOFF

IXOFF沒有在偽 tty 上實現,並且設置IXOFF在偽 tty 上沒有任何效果。

IXOFF應該導致 tty 驅動程序VSTOP在其輸入隊列已滿時將一個字元發送到另一端(這應該會阻止它發送更多數據),並VSTART在它處理完一個字元並且有更多數據的地方時發送一個字元。

這與 不同IXON,它將導致 tty 驅動程序尊重從另一端發送的VSTART/VSTOP字元,並且在接收到VSTOP( ^S) 字元後,停止任何傳輸,直到接收到VSTART( ^Q) 字元。

在偽 tty 的情況下,“另一端”是主 pty,例如。你的終端模擬器;當您按 時^S,它是,而不是設置將導致從 tty 停止回顯輸入的字元並顯示寫入它的數據(將排隊直到輸出隊列已滿,當任何從 tty 將阻止或返回)。IX**ON**``IXOFF``write(2)``EAGAIN

不需要在偽 tty 上實現流控制,因為核心總是知道(通過檢查結構欄位或類似的)從屬設備的輸入隊列是否已滿,並且可以阻止程序寫入主 pty。

軟體流控制僅在使用沒有帶外信號(如 RTS/CTS)的真正串列連接時才有用:與任何 Unix、TCP 或其他“管道”抽像不同,線路沒有緩衝並且不會填滿和阻塞,直到接收器已經讀取了它的所有狀態變化。

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