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)不再提示

請(qǐng)問stdout和stderr有哪些區(qū)別呢?

學(xué)益得智能硬件 ? 來(lái)源:學(xué)益得智能硬件 ? 2024-01-13 16:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

為什么大佬在寫代碼的時(shí)候,對(duì)于一些錯(cuò)誤的提示信息喜歡用stderr,而不是直接用printf輸出?

這里面是不是有什么講究?

c8da7938-b1ea-11ee-8b88-92fbcf53809c.png ?

Linux里面,用于處理輸入和輸出的文件描述符有三個(gè),分別表示標(biāo)準(zhǔn)輸入,標(biāo)準(zhǔn)輸出,和標(biāo)準(zhǔn)錯(cuò)誤處理。

比如我們常用的 scanf 和 printf,一個(gè)從標(biāo)準(zhǔn)輸入獲取數(shù)據(jù),一個(gè)往標(biāo)準(zhǔn)輸出寫入數(shù)據(jù)。

stdout和stderr都是輸出,這兩個(gè)的區(qū)別主要有三點(diǎn)。

首先,stdout有緩沖,stderr沒有緩沖。

#include 
#include 


int main()
{
    const char *s = "no such file...";


    while (1) 
    {   
        fprintf(stderr, "error : %s", s); 
        sleep(1);
    }   


    return 0;
}
比如這個(gè)代碼,使用stderr,會(huì)直接把字符串顯示到屏幕上,用戶能立馬看見。

c8ed00b2-b1ea-11ee-8b88-92fbcf53809c.png ?

但是如果換成stdout,用戶什么也看不見。

因?yàn)榇a中沒加換行符,程序也沒有正常結(jié)束。 平時(shí)我們用的printf,就是往stdout里面寫數(shù)據(jù)。

所以使用stderr,它的實(shí)時(shí)性更高,有問題,立馬看見。

第二點(diǎn)也跟緩沖有關(guān)系。如果使用stdout,當(dāng)程序發(fā)生錯(cuò)誤奔潰的時(shí)候,緩沖區(qū)里面的重要數(shù)據(jù)也會(huì)被清空,看不到日志,問題也不好解決。

第三點(diǎn),使用stdout和stderr也可以把不同的數(shù)據(jù)分開,防止放在一起混亂。
#include 


int main()
{
    fprintf(stderr, "錯(cuò)誤信息
");


    printf("正常輸出信息
");


    return 0;
}
這一點(diǎn)在重定向的時(shí)候就能體現(xiàn)出來(lái),默認(rèn)只會(huì)把標(biāo)準(zhǔn)輸出的數(shù)據(jù)定向到目標(biāo)文件中。

c908ca04-b1ea-11ee-8b88-92fbcf53809c.png ??







審核編輯:劉清

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

    關(guān)注

    88

    文章

    11760

    瀏覽量

    219046
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    14738

原文標(biāo)題:stdout和stderr有哪些區(qū)別

文章出處:【微信號(hào):學(xué)益得智能硬件,微信公眾號(hào):學(xué)益得智能硬件】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    請(qǐng)問PWM波輸出方式中的邊沿對(duì)齊與中心對(duì)齊什么區(qū)別?

    請(qǐng)問PWM波輸出方式中的邊沿對(duì)齊與中心對(duì)齊什么區(qū)別?對(duì)于PMSM FOC應(yīng)該使用那種對(duì)齊方式?為什么
    發(fā)表于 02-05 06:06

    (文件描述符0、1、2),(stdin、stdout、stderr),(終端設(shè)...

    標(biāo)準(zhǔn)輸入文件stdin,標(biāo)準(zhǔn)輸出文件stdout和標(biāo)準(zhǔn)錯(cuò)誤輸出文件stderr分別得到的。那么文件描述符0、1和2到底是打開哪個(gè)文件得到的?這里該如何解釋???望懂得其中緣由者指點(diǎn)
    發(fā)表于 03-02 22:05

    mini2440串口測(cè)試程序中stdoutstderr不懂,求大俠講解下。。。

    主要是這兩段程序不懂,那個(gè)stdoutstderr不懂。。void OutputStdChar(FILE *File) {//向設(shè)備寫數(shù)據(jù),打開一個(gè)串口,聲明并且定義該函數(shù) char Buffer
    發(fā)表于 10-25 12:45

    請(qǐng)問固件和程序什么區(qū)別

    本帖最后由 一只耳朵怪 于 2018-5-25 16:13 編輯 請(qǐng)問固件和程序什么區(qū)別?固件是那種燒錄進(jìn)去的不可逆轉(zhuǎn)的硬件編程么?為什么好多可重復(fù)燒寫的代碼叫做XXX固件?
    發(fā)表于 05-25 16:00

    請(qǐng)問一下printf格式符%ld %lld %d區(qū)別

    請(qǐng)問一下printf格式符%ld %lld %d區(qū)別?
    發(fā)表于 12-02 07:18

    如何看到這些通過printf/fprintf輸出到stdout/stderr的打印信息

    當(dāng)我們使用 procd init 腳本讓某個(gè)應(yīng)用程序?qū)崿F(xiàn)開機(jī)自啟時(shí),會(huì)發(fā)現(xiàn)應(yīng)用程序中原本通過 printf/fprintf 等輸出到 stdout/stderr 的打印信息都無(wú)法從串口或 adb
    發(fā)表于 12-29 07:45

    全志D1-H芯片 Tina 如何查看通過 procd init 腳本啟動(dòng)的應(yīng)用輸出到 stdout/stderr 的打印信息?

    問題描述當(dāng)我們使用 procd init 腳本讓某個(gè)應(yīng)用程序?qū)崿F(xiàn)開機(jī)自啟時(shí),會(huì)發(fā)現(xiàn)應(yīng)用程序中原本通過 printf/fprintf 等輸出到 stdout/stderr 的打印信息都無(wú)法從串口或
    發(fā)表于 03-16 13:54

    全志D1-H芯片 Tina 如何查看通過 procd init 腳本啟動(dòng)的應(yīng)用輸出到 stdout/stderr 的打印信息?

    問題描述當(dāng)我們使用 procd init 腳本讓某個(gè)應(yīng)用程序?qū)崿F(xiàn)開機(jī)自啟時(shí),會(huì)發(fā)現(xiàn)應(yīng)用程序中原本通過 printf/fprintf 等輸出到 stdout/stderr 的打印信息都無(wú)法從串口或
    發(fā)表于 03-29 19:13

    “移動(dòng)PC”和筆記本電腦什么區(qū)別?

    “移動(dòng)PC”和筆記本電腦什么區(qū)別?    問:我想買一臺(tái)低價(jià)筆記本電腦,怕買到“移動(dòng)PC”,請(qǐng)問
    發(fā)表于 01-23 11:27 ?3306次閱讀

    FPGA和單片機(jī)什么區(qū)別

    到底FPGA和單片機(jī)什么區(qū)別?根據(jù)我的經(jīng)驗(yàn),可以用下面進(jìn)行概述。
    發(fā)表于 02-11 08:00 ?4.3w次閱讀

    type-c和普通接口什么區(qū)別

      隨著type-c接口的普及,現(xiàn)在越來(lái)越多的電子產(chǎn)品都使用了type-c接口,那么,type-c和普通接口什么區(qū)別?
    的頭像 發(fā)表于 07-28 11:17 ?8269次閱讀
    type-c和普通接口<b class='flag-5'>有</b>什么<b class='flag-5'>區(qū)別</b><b class='flag-5'>呢</b>?

    請(qǐng)問放大器與中繼器什么區(qū)別?

    請(qǐng)問放大器與中繼器什么區(qū)別? 放大器和中繼器是網(wǎng)絡(luò)設(shè)備中常見的兩種裝置,它們?cè)诰W(wǎng)絡(luò)中起到了不同的作用。盡管這兩個(gè)設(shè)備都可以增強(qiáng)信號(hào),但它們有著不同的功能和使用場(chǎng)合。在本文中,我們將詳細(xì)討論放大器
    的頭像 發(fā)表于 09-13 14:17 ?3955次閱讀

    什么叫做LVDS信號(hào)?請(qǐng)問TTL信號(hào)與LVDS信號(hào)什么區(qū)別?

    什么叫做LVDS信號(hào)?請(qǐng)問TTL信號(hào)與LVDS信號(hào)什么區(qū)別? LVDS信號(hào) LVDS(Low Voltage Differential Signaling)又稱低壓差分信號(hào)傳輸技術(shù),是一種采用差分
    的頭像 發(fā)表于 10-18 15:38 ?4244次閱讀

    天線和饋線哪些區(qū)別

    天線和饋線哪些區(qū)別? 天線和饋線是無(wú)線通信系統(tǒng)中不可或缺的兩個(gè)部分,它們?cè)趯?shí)現(xiàn)無(wú)線信號(hào)的傳輸和接收過程中起著關(guān)鍵的作用。雖然天線和饋線都是用于無(wú)線通信的,但它們的功能和應(yīng)用場(chǎng)景有所不同。以下將
    的頭像 發(fā)表于 01-04 15:05 ?4457次閱讀

    請(qǐng)問Docker和傳統(tǒng)虛擬機(jī)什么區(qū)別?

    雖然人跑了,但起碼還有服務(wù)器陪著他,但屏幕前依然單身的你? 你連服務(wù)器都沒有。
    的頭像 發(fā)表于 03-29 15:54 ?1101次閱讀
    <b class='flag-5'>請(qǐng)問</b>Docker和傳統(tǒng)虛擬機(jī)<b class='flag-5'>有</b>什么<b class='flag-5'>區(qū)別</b><b class='flag-5'>呢</b>?