女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

1. 緩沖區(qū)概述

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

1、全緩沖:

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

2、行緩沖:

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

3、不帶緩沖:

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

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

測試代碼:

#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的大小只是一個調(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)容的。實際上要想成功給文件寫進內(nèi)容,除了緩沖區(qū)填滿,還有別的方法。

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

#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)容也會寫進文件

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

return 0;

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

#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)容也會寫進文件。

3. 行緩沖

#include 《stdio.h》

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

printf(“hello test”);

while(1);

return 0;

運行這個程序,會發(fā)現(xiàn) hello test并沒有打印到屏幕上。因為標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出對應(yīng)終端設(shè)備時通常是行緩沖的,當(dāng)在輸入和輸出中遇到換行符時,標(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)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 緩沖
    +關(guān)注

    關(guān)注

    0

    文章

    53

    瀏覽量

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

    關(guān)注

    4

    文章

    605

    瀏覽量

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

    關(guān)注

    117

    文章

    3826

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

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

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

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

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

    單片機I/O接口的傳輸方式

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

    直接I/O

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

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

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

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

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

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

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

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

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

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

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

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

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

    TCAL敏捷I/O擴展器的特性

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

    簡述計算機的I/O控制方式

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

    NCT5532D LPC I/O英文手冊

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