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

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

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

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

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

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

#include 
#include 


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


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


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

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

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

因為代碼中沒加換行符,程序也沒有正常結(jié)束。 平時我們用的printf,就是往stdout里面寫數(shù)據(jù)。

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

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

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


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


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


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

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







審核編輯:劉清

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

    關(guān)注

    88

    文章

    11681

    瀏覽量

    218573
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    14683

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

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

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

掃碼添加小助手

加入工程師交流群

    評論

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

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

    請問PWM波輸出方式中的邊沿對齊與中心對齊什么區(qū)別?對于PMSM FOC應(yīng)該使用那種對齊方式?為什么
    發(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)錯誤輸出文件stderr分別得到的。那么文件描述符0、1和2到底是打開哪個文件得到的?這里該如何解釋???望懂得其中緣由者指點
    發(fā)表于 03-02 22:05

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    什么叫做LVDS信號?請問TTL信號與LVDS信號什么區(qū)別?

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

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

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

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

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