第十章-Unix I/O

輸入、輸出是在主存和外部設(shè)備之間復(fù)制數(shù)據(jù)的過(guò)程。

  1. Unix I/O
    一個(gè)Linux 文件就是一個(gè)m個(gè)字節(jié)的序列。所有的I/O設(shè)備都被模型化為文件,所有的輸入和輸出都被當(dāng)做對(duì)應(yīng)文件的讀和寫(xiě)來(lái)執(zhí)行。這種將設(shè)備映射為文件的方式,使得Linux內(nèi)核引出一個(gè)簡(jiǎn)單、低級(jí)的應(yīng)用接口,稱為Unix I/O。

  2. 文件種類:
    普通文件,目錄,套接字、命名管道、符號(hào)鏈接、字符和塊設(shè)備。

  3. 文件共享:
    描述符表:每個(gè)進(jìn)程都有一個(gè)描述符表。里面記錄了進(jìn)程打開(kāi)的文件描述符。指向文件表中的一個(gè)表項(xiàng)。
    文件表:每個(gè)文件表的表項(xiàng)包括當(dāng)前的文件位置、引用計(jì)數(shù)等,以及指向v-node表中對(duì)應(yīng)表項(xiàng)的指針。
    v-node表:所有進(jìn)程共享,包括stat結(jié)構(gòu)中的大多數(shù)信息,即文件的元數(shù)據(jù),如st_mode和st_size成員。

  4. I/O重定向
    int dup2(int oldfd, int newfd);
    表示復(fù)制描述符表項(xiàng)oldfd到新描述符表項(xiàng)newfd,覆蓋描述符表項(xiàng)newfd以前的內(nèi)容。如果newfd已經(jīng)打開(kāi)了,則dup2會(huì)在復(fù)制oldfd之前關(guān)閉newfd。
    即原本newfd指向A,則復(fù)制之后newfd也指向oldfd所指向的文件表項(xiàng)。所以之后對(duì)newfd的IO都重定向到了oldfd。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.文件描述符 所有執(zhí)行I/O操作的系統(tǒng)調(diào)用都以文件描述符(一個(gè)非負(fù)整數(shù))來(lái)指代打開(kāi)的文件。文件描述符用以表示所有...
    666真666閱讀 1,223評(píng)論 0 2
  • 最近在讀unix環(huán)境高級(jí)編程,每天都會(huì)做做筆記! UNIX標(biāo)準(zhǔn)及實(shí)現(xiàn) UNIX編程環(huán)境的標(biāo)準(zhǔn)化已經(jīng)取得了很大進(jìn)展。...
    MrTrans閱讀 489評(píng)論 0 1
  • 實(shí)驗(yàn)環(huán)境介紹 gcc:4.8.5 glibc:glibc-2.17-222.el7.x86_64 os:Cento...
    alex_man閱讀 639評(píng)論 0 2
  • 一、I/O 對(duì)于Unix系統(tǒng)來(lái)說(shuō),所有IO設(shè)備,如磁盤(pán)、鼠標(biāo)鍵盤(pán)、網(wǎng)卡,一切皆文件。這樣的一個(gè)好處就是對(duì)于任何東西...
    ShutLove閱讀 268評(píng)論 0 0
  • 高二的時(shí)候,想給奶奶過(guò)個(gè)生日,預(yù)定了蛋糕,因?yàn)槟棠滩粣?ài)吃面,原先計(jì)劃的長(zhǎng)壽面改為了粉。 奶奶看到我...
    君似閱讀 183評(píng)論 0 1

友情鏈接更多精彩內(nèi)容