什麼是標準輸入,標準輸出(stdin,stdout)?

要弄清什麼是標準輸入輸出。首先需要弄懂什麼是IO
IO的I是Input的意思,O是output的意思。
意味着輸入輸出
更確切的含義是
I:從外部設備輸入到內存
O:從內存輸出到外部設備

而標準輸入和標準輸出是幹什麼的?它們是用於IO的。
那麼它們屬於IO的哪個部分?
內存?還是外部設備?
答案顯然是外部設備(邏輯上的外部設備,爲什麼?接着看)。

更具體的含義?
在linux操作系統中,外部設備用什麼表示?是用文件。
linux中一切設備皆是文件!
因此標準輸入和輸出更具體的含義是文件。

它們是哪兩個文件?
它們是/dev/stdin這個文件和/dev/stdout這個文件。
也就是說所謂的標準輸入和標準輸出其實就是兩個linux下的文件

linux的文件類型有:
1、普通文件2、字符設備文件3、塊設備文4、目錄文件
5、鏈接文件6、管道文件7、套接字文件
思考一下?它們是什麼文件?它們在/dev目錄下,它們是設備文件嗎?

那麼所謂的從標準輸入讀是什麼意思?
邏輯上來看:
就是打開/dev/stdin這個文件,然後這個文件裏的內容讀進來
輸出到標準輸出是什麼意思?
邏輯上來看:
就是打開/dev/stdout這個文件,然後把內容輸出到這個文件裏去。

爲什麼是從邏輯上來看?因爲它們不是設備文件!!!
所以它們不代表一個設備。linux裏一切皆是文件,設備是文件,但是文件不一定是設備!
那它們是什麼文件?他們是鏈接文件。(可以用ls -l /dev來查看 l開頭的就是鏈接文件。)
什麼是鏈接文件?文件內容是另一個文件的地址的文件稱爲鏈接文件
因此,打開、讀或者寫 /dev/stdin和/dev/stdout 實際上是打開、讀或者寫這兩個文件存放的地址對應的設備文件

明白它們是鏈接文件不是設備文件有什麼用?
明白這一點才能知道重定向失效的原理。這個下一篇文章再講!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章