8.2低級I/O--read和write

輸入和輸出是通過read和write系統(tǒng)調(diào)用實(shí)現(xiàn)的(調(diào)用系統(tǒng)的功能),在C語言程序中,可以通過函數(shù)read和write訪問這兩個系統(tǒng)調(diào)用.這兩個函數(shù)中,第一個參數(shù)是文件描述符,第二個參數(shù)是程序中存放讀或?qū)憯?shù)據(jù)的字符數(shù)組,第三個參數(shù)是要傳輸?shù)淖止?jié)數(shù).

每個調(diào)用返回實(shí)際傳輸?shù)淖止?jié)數(shù).在讀文件時,函數(shù)的返回值可能會小于請求的字節(jié)數(shù),如果返回值為0,則表示已到達(dá)文件的結(jié)尾:如果返回值為-1,則表示發(fā)生了某種錯誤.在寫文件時,返回值是實(shí)際寫入的字節(jié)數(shù),如果返回值與請求寫入的字節(jié)數(shù)不相等則說明發(fā)生了錯誤.

在單次調(diào)用中,讀出或?qū)懭氲臄?shù)據(jù)的字節(jié)數(shù)可以為任意大小.最常用的值為1,即每次讀出或?qū)懭?個字符(無緩沖),或是類似于1024或4098這樣的與外圍設(shè)備的物理塊大小相應(yīng)的值,用更大的值調(diào)用函數(shù)可以獲得更高的效率,因?yàn)橄到y(tǒng)調(diào)用的次數(shù)少了.

下面那個程序例子懶得寫了,0是標(biāo)準(zhǔn)輸入,1是標(biāo)準(zhǔn)輸出.然后那個重定向是由外面的系統(tǒng)>和<來實(shí)現(xiàn)的.

系統(tǒng)調(diào)用的函數(shù)原型集中放在頭文件syscalls.h中.

BUFSIZ是一個常量,是系統(tǒng)自帶的.如果文件大小不是這個BUFSIZ的倍數(shù)(因?yàn)槊看握{(diào)用都只讀取BUFSIZ個字符,所以最后一次就會返回另一個值,這個值就是最后讀取的字符數(shù)),然后最后一次寫就通過這個值去寫.(然后文件到末尾read返回0,判斷式為假,終止程序.)

getchar函數(shù).
就是通過read向0(標(biāo)準(zhǔn)輸入讀取字符)判斷返回值是否為1(因?yàn)閞ead的第三個參數(shù)每次讀取數(shù)量就是1),如果為1,向調(diào)用getchar的函數(shù)返回讀入的這個c(c必須是變量,用于保存read讀入的字符還因?yàn)閞ead需要地址.).否則返回EOF.

第二個getchar函數(shù)
static對外隱藏數(shù)組和指針.并且在程序運(yùn)行過程中不重置數(shù)組和指針的內(nèi)容.
但是這個程序真的只是返回一個字符的.
read讀取后放入buf數(shù)組中.變量n改變?yōu)椴坏扔?.
return只返回了bufp++那個字符,
之后每次調(diào)用都會從buf數(shù)組中返回值(
bufp++是buf數(shù)組的下一個字符).
如果n等于0的話就是緩沖區(qū)中已經(jīng)沒有字符了.所以要將bufp這個遍歷buf數(shù)組的指針初始化為buf開頭的位置.
讀入一組只返回一個不知道在哪能用到.

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

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

  • C/C++輸入輸出流總結(jié) 前兩天寫C++實(shí)習(xí)作業(yè),突然發(fā)現(xiàn)I/O是那么的陌生,打了好長時間的文件都沒有打開,今天終...
    LuckTime閱讀 1,807評論 0 6
  • 本文用于介紹 QIODevice 類,該類是 QSerialPort 的父類。系統(tǒng)環(huán)境:Win10 64位轉(zhuǎn)載請注...
    import_hello閱讀 7,689評論 0 3
  • 第一章 Nginx簡介 Nginx是什么 沒有聽過Nginx?那么一定聽過它的“同行”Apache吧!Ngi...
    JokerW閱讀 33,019評論 24 1,002
  • 【學(xué)習(xí)易效能時間管理93講】 【情緒】生活中只有10%無法掌控 在《高效能人士的精力管理》這本書中提到,精力分為4...
    渺塵03閱讀 748評論 0 1
  • 我的爸爸是江漢平原的一名莊稼漢子,在他的身上閃耀著質(zhì)樸,勤勞智慧的光芒。 一年四季他都要比別人忙,耕田耙地,播種插...
    緣惜閱讀 216評論 0 4

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