Terminal
當程序寫入偽終端從機時,為什麼它不讀取它寫的內容?
這是我的 bash 會話:
lrwx------ 1 stas stas 64 Mar 5 18:18 0 -> /dev/pts/0 lrwx------ 1 stas stas 64 Mar 5 18:18 1 -> /dev/pts/0 lrwx------ 1 stas stas 64 Mar 5 18:18 2 -> /dev/pts/0
我們看到 bash 既可以讀取也可以寫入
/dev/pts/0
. 我的問題是:這個過程為什麼不讀取它剛剛在那裡寫的內容?是什麼讓只master pty
接收數據?
/dev/pts/0
不是正常文件而是字元設備節點,如ls -l
輸出的第一列所示:v crw--w---- 1 tilman tty 136, 0 Mär 6 20:25 /dev/pts/0
因此,讀寫操作不是訪問磁碟上的某個文件,而是由一個稱為設備驅動程序的軟體處理,該軟體幾乎可以做任何作者想讓它做的事情,從根本上什麼都不做(如在後面的驅動程序的情況
/dev/null
)來詳細說明對電腦中某些硬體的操作(如實際硬體驅動程序的情況。)在該
/dev/pts/0
驅動程序的特定情況下寫入(非常簡化):
- 如果一個程序將一些數據寫入從設備,則將該數據作為結果提供給主設備上的下一次讀取操作。
- 如果一個程序將一些數據寫入主設備,則將該數據作為結果提供給從設備上的下一次讀取操作。
它不是為了將寫入從設備的數據提供回從設備上的讀取操作,因此不會發生這種情況。