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

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

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

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

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

GReq_mcu168 ? 來(lái)源:玩轉(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庫(kù)執(zhí)行I/O操作。這允許我們一次輸出一個(gè)字符,但只有在寫(xiě)了一行之后才進(jìn)行實(shí)際I/O操作。標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出對(duì)應(yīng)終端設(shè)備(如屏幕)時(shí)通常是行緩沖的。

3、不帶緩沖:

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

2. 全緩沖

測(cè)試代碼:

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

FILE *fp = NULL;

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

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

if(NULL == fp)

printf(“open error

return 1;

char *str = “C++程序員

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

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

return 0;

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

測(cè)試代碼:

#include 《stdio.h》

#include 《string.h》

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

FILE *fp = NULL;

// 讀寫(xiě)方式打開(kāi),文件不存在則創(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);// 往文件寫(xiě)內(nèi)容

i++;

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

return 0;

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

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

#include 《stdio.h》

#include 《string.h》

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

FILE *fp = NULL;

// 讀寫(xiě)方式打開(kāi),文件不存在則創(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);// 往文件寫(xiě)內(nèi)容

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

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

return 0;

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

#include 《stdio.h》

#include 《string.h》

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

FILE *fp = NULL;

// 讀寫(xiě)方式打開(kāi),文件不存在則創(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);// 往文件寫(xiě)內(nèi)容

return 0;

// 程序正常結(jié)束,就算緩沖區(qū)沒(méi)有填滿,沒(méi)有關(guān)閉文件,內(nèi)容也會(huì)寫(xiě)進(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并沒(méi)有打印到屏幕上。因?yàn)闃?biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出對(duì)應(yīng)終端設(shè)備時(shí)通常是行緩沖的,當(dāng)在輸入和輸出中遇到換行符時(shí),標(biāo)準(zhǔn)I/O庫(kù)執(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”;

// 有沒(méi)有

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

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

while(1);

return 0;

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

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

    關(guān)注

    0

    文章

    53

    瀏覽量

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

    關(guān)注

    4

    文章

    605

    瀏覽量

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

    關(guān)注

    117

    文章

    3826

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

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

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

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

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

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

    、智慧城市等。 ? ?● 根據(jù)應(yīng)用場(chǎng)景確定需要監(jiān)測(cè)和控制的具體設(shè)備及其參數(shù)。 2. 設(shè)備兼容性: ? ?● 確定網(wǎng)關(guān)需要支持的設(shè)備類型、通信協(xié)議和接口。 ? ?● 確保無(wú)線I/O網(wǎng)關(guān)能夠與現(xiàn)場(chǎng)的傳感器、執(zhí)行器等設(shè)備兼容。 二、選
    的頭像 發(fā)表于 04-13 07:35 ?347次閱讀
    怎樣使用無(wú)線 <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)鍵組件,它們?cè)诠δ堋⒔Y(jié)構(gòu)、作用及運(yùn)作機(jī)制上均存在顯著差異,卻又相互協(xié)同工作,共同構(gòu)建起CPU與外部設(shè)備之間的橋梁
    的頭像 發(fā)表于 02-02 16:00 ?1456次閱讀

    單片機(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 ?1072次閱讀

    直接I/O庫(kù)

    電子發(fā)燒友網(wǎng)站提供《直接I/O庫(kù).pdf》資料免費(fèi)下載
    發(fā)表于 10-14 10:55 ?0次下載
    直接<b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>庫(kù)</b>

    使用智能高邊開(kāi)關(guān)優(yōu)化數(shù)字I/O模塊的電源

    電子發(fā)燒友網(wǎng)站提供《使用智能高邊開(kāi)關(guān)優(yōu)化數(shù)字I/O模塊的電源.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 10:07 ?1次下載
    使用智能高邊開(kāi)關(guān)優(yōu)化數(shù)字<b class='flag-5'>I</b>/<b class='flag-5'>O</b>模塊的電源

    物聯(lián)網(wǎng)中常見(jiàn)的I/O擴(kuò)展電路設(shè)計(jì)方案_IIC I/O擴(kuò)展芯片

    )自帶的I/O端口數(shù)量有限,但物聯(lián)網(wǎng)項(xiàng)目往往需要連接大量的傳感器、執(zhí)行器和其他外設(shè)。I2C I/O
    的頭像 發(fā)表于 09-24 11:29 ?1356次閱讀
    物聯(lián)網(wǎng)中常見(jiàn)的<b class='flag-5'>I</b>/<b class='flag-5'>O</b>擴(kuò)展電路設(shè)計(jì)方案_IIC <b class='flag-5'>I</b>/<b class='flag-5'>O</b>擴(kuò)展芯片

    保護(hù)I/O模塊免受浪涌事件的影響

    電子發(fā)燒友網(wǎng)站提供《保護(hù)I/O模塊免受浪涌事件的影響.pdf》資料免費(fèi)下載
    發(fā)表于 09-21 10:14 ?0次下載
    保護(hù)<b class='flag-5'>I</b>/<b class='flag-5'>O</b>模塊免受浪涌事件的影響

    遠(yuǎn)程I/O模塊在不同領(lǐng)域的應(yīng)用

    在當(dāng)今快速發(fā)展的工業(yè)自動(dòng)化領(lǐng)域,遠(yuǎn)程輸入/輸出(I/O)模塊正逐漸成為不可或缺的核心組件,本文將探討遠(yuǎn)程I/O模塊在不同領(lǐng)域的廣泛應(yīng)用。 工業(yè)制造領(lǐng)域 在汽車制造業(yè)等高度自動(dòng)化的生產(chǎn)線
    的頭像 發(fā)表于 09-20 16:43 ?1276次閱讀

    I/O模塊的主要作用有哪些

    點(diǎn)的信號(hào)。 我們來(lái)看看遠(yuǎn)程I/O模塊的主要作用: 信號(hào)集中管理:在一個(gè)廣闊的工廠環(huán)境中,設(shè)備可能散布在不同的區(qū)域。遠(yuǎn)程I/O模塊能夠?qū)⑦@些分散的傳感器(例如溫度、壓力、液位傳感器)或
    的頭像 發(fā)表于 09-20 16:41 ?1188次閱讀

    區(qū)域架構(gòu)和 MCU I/O 擴(kuò)展

    電子發(fā)燒友網(wǎng)站提供《區(qū)域架構(gòu)和 MCU I/O 擴(kuò)展.pdf》資料免費(fèi)下載
    發(fā)表于 09-09 10:51 ?0次下載
    區(qū)域架構(gòu)和 MCU <b class='flag-5'>I</b>/<b class='flag-5'>O</b> 擴(kuò)展

    TCAL敏捷I/O擴(kuò)展器的特性

    電子發(fā)燒友網(wǎng)站提供《TCAL敏捷I/O擴(kuò)展器的特性.pdf》資料免費(fèi)下載
    發(fā)表于 09-05 10:49 ?0次下載
    TCAL敏捷<b class='flag-5'>I</b>/<b class='flag-5'>O</b>擴(kuò)展器的特性

    簡(jiǎn)述計(jì)算機(jī)的I/O控制方式

    計(jì)算機(jī)的I/O(輸入/輸出)控制方式是計(jì)算機(jī)系統(tǒng)中至關(guān)重要的部分,它決定了CPU與外設(shè)之間數(shù)據(jù)交換的方式和效率。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,I/O控制方式也經(jīng)歷了從簡(jiǎn)單到復(fù)雜、從低效到高
    的頭像 發(fā)表于 08-20 10:55 ?2377次閱讀

    NCT5532D LPC I/O英文手冊(cè)

    電子發(fā)燒友網(wǎng)站提供《NCT5532D LPC I/O英文手冊(cè).pdf》資料免費(fèi)下載
    發(fā)表于 08-09 14:58 ?15次下載