什么是标准输入,标准输出(stdin,stdout)
什么是標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出(stdin,stdout)?
要弄清什么是標(biāo)準(zhǔn)輸入輸出。首先需要弄懂什么是IO。
IO的I是Input的意思,O是output的意思。意味著輸入和輸出。
更確切的含義是
I:從外部設(shè)備輸入到內(nèi)存
O:從內(nèi)存輸出到外部設(shè)備
而標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出是干什么的?它們是用于IO的。
那么它們屬于IO的哪個(gè)部分?
內(nèi)存?還是外部設(shè)備?
答案顯然是外部設(shè)備(邏輯上的外部設(shè)備,為什么?接著看)。
更具體的含義?
在linux操作系統(tǒng)中,外部設(shè)備用什么表示?是用文件。
linux中一切設(shè)備皆是文件!
因此標(biāo)準(zhǔn)輸入和輸出更具體的含義是文件。
它們是哪兩個(gè)文件?
它們是/dev/stdin這個(gè)文件和/dev/stdout這個(gè)文件。
也就是說所謂的標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出其實(shí)就是兩個(gè)linux下的文件。
linux的文件類型有:
1、普通文件2、字符設(shè)備文件3、塊設(shè)備文4、目錄文件
5、鏈接文件6、管道文件7、套接字文件
思考一下?它們是什么文件?它們在/dev目錄下,它們是設(shè)備文件嗎?
那么所謂的從標(biāo)準(zhǔn)輸入讀是什么意思?
邏輯上來看:
就是打開/dev/stdin這個(gè)文件,然后把這個(gè)文件里的內(nèi)容讀進(jìn)來。
輸出到標(biāo)準(zhǔn)輸出是什么意思?
邏輯上來看:
就是打開/dev/stdout這個(gè)文件,然后把內(nèi)容輸出到這個(gè)文件里去。
為什么是從邏輯上來看?因?yàn)樗鼈儾皇窃O(shè)備文件!!!
所以它們不代表一個(gè)設(shè)備。linux里一切皆是文件,設(shè)備是文件,但是文件不一定是設(shè)備!
那它們是什么文件?他們是鏈接文件。(可以用ls -l /dev來查看 l開頭的就是鏈接文件。)
什么是鏈接文件?文件內(nèi)容是另一個(gè)文件的地址的文件稱為鏈接文件。
因此,打開、讀或者寫 /dev/stdin和/dev/stdout 實(shí)際上是打開、讀或者寫這兩個(gè)文件存放的地址對應(yīng)的設(shè)備文件。
明白它們是鏈接文件不是設(shè)備文件有什么用?
明白這一點(diǎn)才能知道重定向失效的原理。
參考文章:什么是標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出(stdin,stdout)
總結(jié)
以上是生活随笔為你收集整理的什么是标准输入,标准输出(stdin,stdout)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 标记语言 编程语言 脚本语言分别有哪些?
- 下一篇: 域socket(domain socke