一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

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

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

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

更改緩沖類型

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

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

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

指向文件的流是全緩沖的

……

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

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

參數(shù)說明如下:

stream FILE *類型,文件指針

buf 緩沖區(qū)指針

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

size 緩沖區(qū)大小

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

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

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

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

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

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

fputs沒有及時(shí)輸出

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

看看下面的例子:

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

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

printf打印的日志沒有輸出

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

fflush之后文件還是丟失了

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

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

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

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

fsync/sync函數(shù)

sync命令

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

總結(jié)

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

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

    瀏覽量

    17958
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎ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

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

    } } } 這樣,就可以使用中斷方式進(jìn)行串口打印輸出了。該方法可以很簡單移植到其他單片機(jī)上。當(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ù)傳輸中,用來彌補(bǔ)不同數(shù)據(jù)處
    發(fā)表于 03-08 13:30 ?2596次閱讀

    三態(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>電路工作原理

    起重緩沖器的作用

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

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

    電子發(fā)燒友網(wǎng)為你提供詳解高速ADC模擬輸入架構(gòu)類型緩沖型和無緩沖型資料下載的電子資料下載,更有其他相關(guān)的電路圖、源代碼、課件教程、中文資料、英文資料、參考設(shè)計(jì)、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發(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ù)潆娐飞弦话銢]有吸收緩沖電路,實(shí)際電路上一般有吸收緩沖電路,吸收與緩沖是工程需要,不是拓?fù)?/div>
    發(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 ?745次閱讀

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

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

    RC緩沖器的工作過程介紹

    RC緩沖器的基本功能是修改振鈴頻率和降低電壓尖峰電平。這一點(diǎn)對于保護(hù)電子元件,特別是那些對電壓敏感的元件如MOSFET,至關(guān)重要。通過限制電壓尖峰,RC緩沖器有助于維持電路的穩(wěn)定性和可靠性。 RC
    的頭像 發(fā)表于 10-04 16:25 ?623次閱讀
    RC<b class='flag-5'>緩沖</b>器的工作過程<b class='flag-5'>介紹</b>