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

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

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

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

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

linux的文件類型有:
一、普通文件二、字符設備文件三、塊設備文四、目錄文件
五、連接文件六、管道文件七、套接字文件
思考一下?它們是什麼文件?它們在/dev目錄下,它們是設備文件嗎?重定向

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

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

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

相關文章
相關標籤/搜索