chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

關(guān)于標(biāo)準(zhǔn)I/O庫執(zhí)行I/O操作

GReq_mcu168 ? 來源:玩轉(zhuǎn)單片機(jī) ? 作者:玩轉(zhuǎn)單片機(jī) ? 2020-07-01 17:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 緩沖區(qū)概述

標(biāo)準(zhǔn)I/O提供了三種類型的緩沖:

1、全緩沖:

在填滿標(biāo)準(zhǔn)I/O緩沖區(qū)后才進(jìn)行實(shí)際I/O操作。常規(guī)文件(如普通文本文件)通常是全緩沖的。

2、行緩沖:

當(dāng)在輸入和輸出中遇到換行符時(shí),標(biāo)準(zhǔn)I/O庫執(zhí)行I/O操作。這允許我們一次輸出一個(gè)字符,但只有在寫了一行之后才進(jìn)行實(shí)際I/O操作。標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出對(duì)應(yīng)終端設(shè)備(如屏幕)時(shí)通常是行緩沖的。

3、不帶緩沖:

用戶程序每次調(diào)庫函數(shù)做寫操作都要通過系統(tǒng)調(diào)用寫回內(nèi)核(如系統(tǒng)調(diào)用函數(shù))。標(biāo)準(zhǔn)錯(cuò)誤輸出通常是無緩沖的,這樣用戶程序產(chǎn)生的錯(cuò)誤信息可以盡快輸出到設(shè)備。

2. 全緩沖

測試代碼:

int main(int argc, char *argv[])

FILE *fp = NULL;

// 讀寫方式打開,文件不存在則創(chuàng)建

fp = fopen(“test.txt”, “w+”);

if(NULL == fp)

printf(“open error

return 1;

char *str = “C++程序員

fwrite(str, 1, strlen(str), fp);// 往文件寫內(nèi)容

while(1);// 程序阻塞在這里

return 0;

運(yùn)行程序發(fā)現(xiàn),test.txt并沒有內(nèi)容。因?yàn)槌R?guī)文件通常是全緩沖的,只有緩沖區(qū)滿了后,才會(huì)把內(nèi)容寫到文件中。接下來,我們改一下上面那個(gè)例子。

測試代碼:

#include 《stdio.h》

#include 《string.h》

int main(int argc, char *argv[])

FILE *fp = NULL;

// 讀寫方式打開,文件不存在則創(chuàng)建

fp = fopen(“test.txt”, “w+”);

if(NULL == fp)

printf(“open error

return 1;

char *str = “test

int i = 0;

while(i 《= 512){// 緩沖區(qū)大小不確定,i的大小只是一個(gè)調(diào)試值

fwrite(str, 1, strlen(str), fp);// 往文件寫內(nèi)容

i++;

while(1);// 程序阻塞在這里

return 0;

上面的例子是循環(huán)給文件寫內(nèi)容,讓緩沖區(qū)有填滿的可能,結(jié)果發(fā)現(xiàn),文件是有內(nèi)容的。實(shí)際上要想成功給文件寫進(jìn)內(nèi)容,除了緩沖區(qū)填滿,還有別的方法。

2.1 人為關(guān)閉文件,就算緩沖區(qū)沒有填滿,內(nèi)容也會(huì)寫進(jìn)文件

#include 《stdio.h》

#include 《string.h》

int main(int argc, char *argv[])

FILE *fp = NULL;

// 讀寫方式打開,文件不存在則創(chuàng)建

fp = fopen(“test.txt”, “w+”);

if(NULL == fp)

printf(“open error

return 1;

char *str = “test ok

fwrite(str, 1, strlen(str), fp);// 往文件寫內(nèi)容

fclose(fp);// 人為關(guān)閉文件,就算緩沖區(qū)沒有填滿,內(nèi)容也會(huì)寫進(jìn)文件

while(1);// 程序阻塞在這里

return 0;

2.2 程序正常結(jié)束,就算緩沖區(qū)沒有填滿,沒有關(guān)閉文件,內(nèi)容也會(huì)寫進(jìn)文件。

#include 《stdio.h》

#include 《string.h》

int main(int argc, char *argv[])

FILE *fp = NULL;

// 讀寫方式打開,文件不存在則創(chuàng)建

fp = fopen(“test.txt”, “w+”);

if(NULL == fp)

printf(“open error

return 1;

char *str = “test ok

fwrite(str, 1, strlen(str), fp);// 往文件寫內(nèi)容

return 0;

// 程序正常結(jié)束,就算緩沖區(qū)沒有填滿,沒有關(guān)閉文件,內(nèi)容也會(huì)寫進(jìn)文件。

3. 行緩沖

#include 《stdio.h》

int main(int argc, char *argv[])

printf(“hello test”);

while(1);

return 0;

運(yùn)行這個(gè)程序,會(huì)發(fā)現(xiàn) hello test并沒有打印到屏幕上。因?yàn)闃?biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出對(duì)應(yīng)終端設(shè)備時(shí)通常是行緩沖的,當(dāng)在輸入和輸出中遇到換行符時(shí),標(biāo)準(zhǔn)I/O庫執(zhí)行I/O操作。如下:

#include 《stdio.h》

int main(int argc, char *argv[])

printf(“hello test

while(1);

return 0;

除了遇到換行符,還有別的方法可以執(zhí)行I/O操作。

3.1 緩沖區(qū)滿

int main(int argc, char *argv[])

while(1)

// 循環(huán)打印,總有緩沖區(qū)填滿的可能

printf(“hello sunplusedu”);

while(1);

return 0;

3.2 人為刷新緩沖區(qū)

#include 《stdio.h》

int main(int argc, char *argv[])

printf(“hello test”);

fflush(stdout);// 人為刷新

while(1);

return 0;

3.3 程序正常結(jié)束

#include 《stdio.h》

int main(int argc, char *argv[])

printf(“hello sunplusedu”);

return 0;

// 程序正常結(jié)束

4. 不帶緩沖區(qū)

#include 《unistd.h》

#include 《string.h》

int main(int argc, char *argv[])

char *str = “hello test”;

// 有沒有

,緩沖區(qū)有沒有填滿,都沒關(guān)系

write(1, str, strlen(str));// 往標(biāo)準(zhǔn)輸出寫內(nèi)容

while(1);

return 0;

Linux系統(tǒng)調(diào)用中的IO函數(shù)一般不帶有緩沖區(qū)。
責(zé)任編輯:pj

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 緩沖
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

    18174
  • Linux系統(tǒng)
    +關(guān)注

    關(guān)注

    4

    文章

    609

    瀏覽量

    29620
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3836

    瀏覽量

    84737
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    飛凌嵌入式ElfBoard-文件I/O的深入學(xué)習(xí)之阻塞I/O與非阻塞I/O

    1.4.1.1 概念 阻塞I/O顧名思義就是對(duì)文件的I/O操作是阻塞式的,即假如對(duì)某些類型文件(管道文件、網(wǎng)絡(luò)設(shè)備文件和字符設(shè)備文件)進(jìn)行讀
    發(fā)表于 12-01 13:07

    飛凌嵌入式ElfBoard-文件I/O的了解探究之I/O緩沖

    通過標(biāo)準(zhǔn)I/O操作磁盤文件時(shí),為了減少系統(tǒng)調(diào)用的次數(shù),標(biāo)準(zhǔn)I/
    發(fā)表于 11-19 16:24

    淺談光學(xué)I/O模塊的熱挑戰(zhàn)

    服務(wù)器和機(jī)架式網(wǎng)絡(luò)基礎(chǔ)設(shè)施系統(tǒng)內(nèi)的光學(xué) I/O 模塊通常接受主動(dòng)冷卻系統(tǒng)的直接冷卻,特別是來自機(jī)架式設(shè)備前面板的強(qiáng)制風(fēng)冷。機(jī)架式設(shè)備的散熱設(shè)計(jì)需要平衡 I/O 模塊的熱管理與處理器或
    的頭像 發(fā)表于 11-03 09:32 ?403次閱讀
    淺談光學(xué)<b class='flag-5'>I</b>/<b class='flag-5'>O</b>模塊的熱挑戰(zhàn)

    如何解決I/O時(shí)鐘布局器錯(cuò)誤

    I/O 時(shí)鐘布局器階段可能會(huì)發(fā)生錯(cuò)誤,指出該工具無法對(duì)該時(shí)鐘結(jié)構(gòu)進(jìn)行布局,直至最后 BUFG 仍然無法完成布局。
    的頭像 發(fā)表于 09-23 16:05 ?564次閱讀

    TCA9536 4位I2C/SMBus I/O擴(kuò)展器技術(shù)解析

    Texas Instruments TCA9536 4位I/O擴(kuò)展器用于I^2^C總線,可在1.65V至 5.5V的V~CC~ 下運(yùn)行。它可通過I^2^C接口為大多數(shù)微控制器系列提供通
    的頭像 發(fā)表于 09-19 14:45 ?464次閱讀
    TCA9536 4位<b class='flag-5'>I</b>2C/SMBus <b class='flag-5'>I</b>/<b class='flag-5'>O</b>擴(kuò)展器技術(shù)解析

    TCA9537遠(yuǎn)程4位I2C/SMBus I/O擴(kuò)展器技術(shù)解析與應(yīng)用指南

    Texas Instruments TCA9537遠(yuǎn)程4位I^2^C和SMBus I/O擴(kuò)展器在1.65V至5.5V V~CC~電壓下運(yùn)行,可通過I2C接口實(shí)現(xiàn)通用遠(yuǎn)程
    的頭像 發(fā)表于 09-15 16:00 ?636次閱讀
    TCA9537遠(yuǎn)程4位<b class='flag-5'>I</b>2C/SMBus <b class='flag-5'>I</b>/<b class='flag-5'>O</b>擴(kuò)展器技術(shù)解析與應(yīng)用指南

    TCAL9539 I2C總線I/O擴(kuò)展器技術(shù)解析與應(yīng)用指南

    Texas Instrument TCAL9539/TCAL9539-Q1 I^2^C總線/SMBus I/O擴(kuò)展器為雙線雙向I^2^C總線(或SMBus)協(xié)議提供通用并行輸入/輸出
    的頭像 發(fā)表于 08-08 11:49 ?903次閱讀
    TCAL9539 <b class='flag-5'>I</b>2C總線<b class='flag-5'>I</b>/<b class='flag-5'>O</b>擴(kuò)展器技術(shù)解析與應(yīng)用指南

    I/O密集型任務(wù)開發(fā)指導(dǎo)

    使用異步并發(fā)可以解決單次I/O任務(wù)阻塞的問題,但是如果遇到I/O密集型任務(wù),同樣會(huì)阻塞線程中其它任務(wù)的執(zhí)行,這時(shí)需要使用多線程并發(fā)能力來進(jìn)行
    發(fā)表于 06-19 07:19

    MAX7325 I2C端口擴(kuò)展器,提供8路推挽式I/O和8個(gè)漏極開路I/O技術(shù)手冊

    MAX7325 2線串行接口外設(shè)具有16路I/O端口。其中8路為推挽輸出,另外8路為I/O端口,帶有可選擇的內(nèi)部上拉和瞬態(tài)檢測功能。8路I/
    的頭像 發(fā)表于 05-22 15:27 ?663次閱讀
    MAX7325 <b class='flag-5'>I</b>2C端口擴(kuò)展器,提供8路推挽式<b class='flag-5'>I</b>/<b class='flag-5'>O</b>和8個(gè)漏極開路<b class='flag-5'>I</b>/<b class='flag-5'>O</b>技術(shù)手冊

    ADP5588移動(dòng)I/O擴(kuò)展器和QWERTY鍵盤控制器技術(shù)手冊

    ADP5588是一款I/O端口擴(kuò)展器和鍵盤矩陣,適用于需要大型鍵盤矩陣和擴(kuò)展I/O線路的QWERTY型電話。I/
    的頭像 發(fā)表于 05-22 11:37 ?669次閱讀
    ADP5588移動(dòng)<b class='flag-5'>I</b>/<b class='flag-5'>O</b>擴(kuò)展器和QWERTY鍵盤控制器技術(shù)手冊

    ADP5585鍵盤解碼器和I/O擴(kuò)展器技術(shù)手冊

    ADP5585是一款10I/O端口擴(kuò)展器,內(nèi)置鍵盤矩陣解碼器、可編程邏輯、復(fù)位發(fā)生器和PWM發(fā)生器。I/O擴(kuò)展器IC適用于便攜式設(shè)備(手機(jī)、遙控器和相機(jī))及非便攜式應(yīng)用(醫(yī)療保健、工業(yè)
    的頭像 發(fā)表于 05-22 09:21 ?713次閱讀
    ADP5585鍵盤解碼器和<b class='flag-5'>I</b>/<b class='flag-5'>O</b>擴(kuò)展器技術(shù)手冊

    怎樣使用無線 I/O 網(wǎng)關(guān)搭建物聯(lián)網(wǎng)系統(tǒng)

    、智慧城市等。 ? ?● 根據(jù)應(yīng)用場景確定需要監(jiān)測和控制的具體設(shè)備及其參數(shù)。 2. 設(shè)備兼容性: ? ?● 確定網(wǎng)關(guān)需要支持的設(shè)備類型、通信協(xié)議和接口。 ? ?● 確保無線I/O網(wǎng)關(guān)能夠與現(xiàn)場的傳感器、執(zhí)行器等設(shè)備兼容。 二、選
    的頭像 發(fā)表于 04-13 07:35 ?744次閱讀
    怎樣使用無線 <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 網(wǎng)關(guān)搭建物聯(lián)網(wǎng)系統(tǒng)

    I/O接口與I/O端口的區(qū)別

    在計(jì)算機(jī)系統(tǒng)中,I/O接口與I/O端口是實(shí)現(xiàn)CPU與外部設(shè)備數(shù)據(jù)交換的關(guān)鍵組件,它們在功能、結(jié)構(gòu)、作用及運(yùn)作機(jī)制上均存在顯著差異,卻又相互協(xié)同工作,共同構(gòu)建起CPU與外部設(shè)備之間的橋梁
    的頭像 發(fā)表于 02-02 16:00 ?2752次閱讀

    單片機(jī)I/O接口的傳輸方式

    單片機(jī)(Microcontroller Unit,MCU)作為嵌入式系統(tǒng)的核心部件,其輸入輸出(Input/Output,I/O)接口是實(shí)現(xiàn)與外部設(shè)備數(shù)據(jù)交換的關(guān)鍵。I/O接口不僅承擔(dān)
    的頭像 發(fā)表于 02-02 15:56 ?1592次閱讀

    I/O中斷問題

    一個(gè)I/O中斷,initP3的中斷使能,能用P3.2/P3.3兩個(gè)中斷嗎?
    發(fā)表于 01-26 09:35