吴忠躺衫网络科技有限公司

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

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

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

如何修改緩沖類型,緩沖常見問題介紹

西西 ? 來源:編程珠璣 ? 作者:守望先生 ? 2020-01-01 10:33 ? 次閱讀

今天我們看看如何修改這些默認的緩沖類型,以及在實際中可能遇到哪些問題。

更改緩沖類型

在上一篇中說到了一些默認的緩沖類型,例如:

指向終端設(shè)備的流是行緩沖的

標(biāo)準(zhǔn)錯誤是不帶緩沖的

指向文件的流是全緩沖的

……

那么這些默認的緩沖類型如何修改?有幾個函數(shù)可以用來更改緩沖類型:

如何修改緩沖類型,緩沖常見問題介紹

參數(shù)說明如下:

stream FILE *類型,文件指針

buf 緩沖區(qū)指針

mode 緩沖模式,包括_IOFBF(全緩沖),_IOLBUF(行緩沖),_IONBF(不帶緩沖)

size 緩沖區(qū)大小

這里有四個相關(guān)函數(shù),作用類似,只是修改范圍不一。

setbuf函數(shù)中,如果buf設(shè)置為NULL,則緩沖關(guān)閉;否則指向長度為BUFSIZ長度的緩沖區(qū),并且是行緩沖。

如何修改緩沖類型,緩沖常見問題介紹

通過設(shè)置stdout(標(biāo)準(zhǔn)輸出)的第二個參數(shù)為NULL,將其變成了不帶緩沖,因此你運行后發(fā)現(xiàn),printf的打印會立即顯示在終端。當(dāng)然你也可以通過setvbuf,如:

如何修改緩沖類型,緩沖常見問題介紹

這里設(shè)置為不帶緩沖,則會忽略buf和size參數(shù)。設(shè)置為全緩沖或者行緩沖的時候。并且buf為NULL,會使用合適長度的系統(tǒng)buffer,否則使用用戶自定義buffer。緩沖區(qū)的設(shè)置就介紹到這里。

fputs沒有及時輸出

其實在有了前面的基礎(chǔ)之后,很多問題就迎刃而解了。

看看下面的例子:

如何修改緩沖類型,緩沖常見問題介紹

比如你就想輸出一個字符,就打印到終端,但是按照上面的方法,字符并不會被及時輸出到終端,因此它默認是行緩沖的。打開注釋行,設(shè)置為不帶緩沖就可以了。

printf打印的日志沒有輸出

不知道你有沒有遇到過這樣的情況,準(zhǔn)備調(diào)試某一個bug,發(fā)現(xiàn)每次運行到某個地方,打印就結(jié)束了,然后就掛了,讓你誤以為程序執(zhí)行到打印的地方就結(jié)束了,然而有可能程序執(zhí)行到后面,只是由于打印是行緩沖的,導(dǎo)致部分打印沒有出來,很可能就是你沒有加上換行符打印而已。這時候你可以設(shè)置為不帶緩沖,或者關(guān)鍵位置fflush,或者打印記得加上換行符。

fflush之后文件還是丟失了

看完前面的內(nèi)容之后,是不是覺得豁然開朗了?別高興的太早。以上措施并不是萬事大吉。你可能會踩到什么坑?

文件內(nèi)容寫完后,fflush了,內(nèi)容也有了,然后完成后,系統(tǒng)馬上復(fù)位,復(fù)位起來后,文件內(nèi)容還是丟失了

解壓一個壓縮包,解壓成功,系統(tǒng)復(fù)位后,還是發(fā)現(xiàn)文件大小為0,文件丟失了

如果你目前還沒有遇到過這樣的問題,那么你就需要格外注意了。雖然前面fflush等措施將緩沖區(qū)的內(nèi)容進行了I/O操作,但是操作系統(tǒng)還需要將文件系統(tǒng)的buffer寫入磁盤,因此馬上直接復(fù)位會導(dǎo)致文件丟失!怎么辦呢?可以使用

fsync/sync函數(shù)

sync命令

以上函數(shù)或者命令強制將文件系統(tǒng)的buffer寫入磁盤,但是根據(jù)內(nèi)容大小不一而需要不一樣的時間。

總結(jié)

理解緩沖區(qū)的概念會讓你在編程中受益無窮。

聲明:本文內(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

    瀏覽量

    17858
收藏 人收藏

    評論

    相關(guān)推薦

    [7.6.1]--限幅箝位緩沖電路的工作原理

    電路分析緩沖電路
    李開鴻
    發(fā)布于 :2022年11月10日 23:26:47

    [2.13.1]--2.12緩沖電路

    電路分析緩沖電路
    jf_60701476
    發(fā)布于 :2022年11月27日 00:18:52

    單片機應(yīng)用簡單技巧 - 環(huán)形緩沖

    } } } 這樣,就可以使用中斷方式進行串口打印輸出了。該方法可以很簡單移植到其他單片機上。當(dāng)然,接收部分用中斷方式更加常見,建議也使用環(huán)形緩沖或者乒乓緩沖的方式接收數(shù)據(jù),后面專門介紹
    發(fā)表于 09-18 11:01

    Sigma-Delta ADC常見問題解答

    -Delta ADC常見問題解答 ,歡迎小伙伴們下載~~附件Sigma-Delta ADC 常見問題解答_V2.0.pdf923.4 KB
    發(fā)表于 12-10 11:20

    緩沖電路的作用是什么?有什么類型

    緩沖電路的作用與基本類型緩沖電路的基本結(jié)構(gòu)
    發(fā)表于 04-06 07:03

    緩沖器,緩沖器是什么?

    緩沖器,緩沖器是什么? buffer   中文譯名: 緩沖緩沖器,緩沖液  解釋:1、 電信設(shè)備。在數(shù)據(jù)傳輸中,用來彌補不同數(shù)據(jù)處
    發(fā)表于 03-08 13:30 ?2510次閱讀

    三態(tài)緩沖介紹

    三態(tài)緩沖器三態(tài)緩沖器三態(tài)緩沖器三態(tài)緩沖器三態(tài)緩沖器三態(tài)緩沖器三態(tài)
    發(fā)表于 11-16 11:59 ?0次下載

    緩沖電路的基本結(jié)構(gòu)_緩沖電路工作原理

    本文開始介紹緩沖電路的概念,其次闡述了緩沖電路的基本結(jié)構(gòu)與緩沖電路的工作原理,最后介紹緩沖
    發(fā)表于 03-26 13:40 ?7.4w次閱讀
    <b class='flag-5'>緩沖</b>電路的基本結(jié)構(gòu)_<b class='flag-5'>緩沖</b>電路工作原理

    起重緩沖器的作用

    起重機是一種重型機械,作業(yè)時產(chǎn)生的慣性也較大,容易產(chǎn)生意想不到的動作,所以,起重機緩沖器在這時候就起到作用了,起重機緩沖器是吸收起重機的運行動能,以減緩沖擊的,起重機緩沖器作用及
    的頭像 發(fā)表于 12-04 15:45 ?1.2w次閱讀

    詳解高速ADC模擬輸入架構(gòu)類型緩沖型和無緩沖型資料下載

    電子發(fā)燒友網(wǎng)為你提供詳解高速ADC模擬輸入架構(gòu)類型緩沖型和無緩沖型資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(fā)表于 04-28 08:48 ?32次下載
    詳解高速ADC模擬輸入架構(gòu)<b class='flag-5'>類型</b>:<b class='flag-5'>緩沖</b>型和無<b class='flag-5'>緩沖</b>型資料下載

    開關(guān)電源之“吸收和緩沖

    本文主要介紹開關(guān)電源中的吸收緩沖電路。電源的基本拓撲電路上一般沒有吸收緩沖電路,實際電路上一般有吸收緩沖電路,吸收與緩沖是工程需要,不是拓撲
    發(fā)表于 02-09 10:37 ?22次下載
    開關(guān)電源之“吸收和<b class='flag-5'>緩沖</b>”

    電源瞬態(tài)緩沖器的作用是什么

    器的作用、原理、類型、應(yīng)用場景以及如何選擇合適的緩沖器。 一、電源瞬態(tài)緩沖器的作用 1. 防止電壓尖峰和浪涌 瞬態(tài)電壓尖峰和浪涌是電源系統(tǒng)中常見的問題,它們可能由多種原因引起,如雷電、
    的頭像 發(fā)表于 06-10 16:03 ?603次閱讀

    緩沖器電路設(shè)計的分類與比較

    緩沖器電路能夠有效地管理信號傳輸過程中的噪聲、尖峰和振鈴現(xiàn)象。根據(jù)功率損耗的不同,緩沖器電路可以分為有損緩沖電路和無損緩沖電路兩大類。本文將探討這些不同
    的頭像 發(fā)表于 10-04 16:07 ?604次閱讀

    RC緩沖器的工作過程介紹

    RC緩沖器的基本功能是修改振鈴頻率和降低電壓尖峰電平。這一點對于保護電子元件,特別是那些對電壓敏感的元件如MOSFET,至關(guān)重要。通過限制電壓尖峰,RC緩沖器有助于維持電路的穩(wěn)定性和可靠性。 RC
    的頭像 發(fā)表于 10-04 16:25 ?439次閱讀
    RC<b class='flag-5'>緩沖</b>器的工作過程<b class='flag-5'>介紹</b>
    平谷区| 大发888大赢家| 网上赌百家乐官网有假| 巴林左旗| 太阳城管理| 百家乐不倒翁注码| 百家乐官网棋牌交友中心| 大发888官网z46| 网络百家乐棋牌| 百家乐官网蓝盾在线现| 洛阳市| 大发888娱乐场df888| 百家乐庄家怎样赚钱| 大集汇百家乐官网的玩法技巧和规则| 百家乐官网巴厘岛平台| 棋牌评测网xjqppc| 百家乐永利娱乐场开户注册| 大家旺百家乐官网的玩法技巧和规则 | 大发888论坛爱好| 百家乐永利娱乐平台| 星期8百家乐官网娱乐城| 百家乐官网高手技巧| 金宝博滚球| 大发888官网46| 长江百家乐的玩法技巧和规则| 风水学24山看水法| 最大的百家乐官网网站| 深水埗区| 大发888网络赌博害人| 大集汇百家乐的玩法技巧和规则 | 百家乐乐翻天| 百家乐庄比闲多多少| 百家乐官网试玩1000元| 高级百家乐官网出千工具| 陇南市| 大连娱网棋牌大厅| 太阳城巧克力社区| 先锋百家乐的玩法技巧和规则| 百家乐博彩安全吗| 艮山坤向 24山| 百家乐官网在线直播|