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

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

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

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

有關(guān)文件IO操作的錯誤(error)提示

冬至子 ? 來源:嵌入式之入坑筆記 ? 作者:嵌入式之入坑筆記 ? 2023-05-20 16:31 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編程中,我們一般都是要講究一定的使用規(guī)范的。按照一定的規(guī)范編寫代碼,返回運行提示,在代碼運行出現(xiàn)問題時能方便我們能快速的定位到問題的所在。

特別是在使用庫函數(shù)或者系統(tǒng)調(diào)用的API的時候,我們最好也要關(guān)注函數(shù)的返回值所能給我們提供的信息,充分利用好這些返回值以及返回值所代表的含義,對我們的錯誤查找是有很大的便利的!

本文記錄一下文件IO操作時的一些錯誤提示,通過函數(shù)的調(diào)用之后的返回值去查找對應(yīng)的問題。

有關(guān)文件IO的 errno 變量

linux系統(tǒng)中對于常見的錯誤都進行了統(tǒng)計,這些不同的錯誤已經(jīng)被系統(tǒng)進行了編號,并且每個錯誤類型的編號都不一樣,以此來區(qū)分不同的錯誤類型。

errno實際上是一個int型的全局變量,它存儲的是當(dāng)前執(zhí)行函數(shù)所發(fā)生的錯誤編號,如果這個錯誤在被記錄時沒有被及時的訪問,那么會被下一次發(fā)生的錯誤編號所覆蓋掉。

但是有一點是要注意的,不是所有的庫函數(shù)或者系統(tǒng)調(diào)用都會有錯誤碼返回的,關(guān)于這邊要去查詢所調(diào)用的函數(shù)說明才能知道。比如我想知道函數(shù) open 是否會返回錯誤碼,那就可以使用 man 2 open 進行查看,如下:

圖片

從圖中可以看出,open函數(shù)在調(diào)用出現(xiàn)異常的時候會設(shè)置errno變量的。

C庫函數(shù) strerror( )

雖然我們知道了通過errno變量可以獲取到函數(shù)調(diào)用出現(xiàn)錯誤時的錯誤編號。但是錯誤編號它只是一個數(shù)字,對于我們而言光是知道一個數(shù)字總歸是差點意思的。

而我們最終是希望通過這個數(shù)字獲取到有關(guān)的錯誤原因或者某種提示,這才是我們查找問題的好幫手啊。

這個時候我們可以考慮使用一個C庫函數(shù)— strerror()。通過這個函數(shù)將我們代碼中獲取到的錯誤編碼轉(zhuǎn)換成對應(yīng)的字符串輸出,讓我們能夠看的明白錯誤是怎么回事。

strerror()函數(shù)的原型如下:

#include 


char*strerror(int errnum);



參數(shù)和返回值如下:


errnum :錯誤編號 errno。


返回值:對應(yīng)錯誤編號的字符串描述信息。

比如:我調(diào)用open函數(shù)以只讀的方式打開一個不存在的文件,并打印變量errno的值,然后轉(zhuǎn)換成字符串輸出,看看是什么效果。

代碼如下:


#include


#include


#include


#include


#include


#include


#include



intmain(void)


{


char buf[1024];


int fd_src;



fd_src =open("./xxxx.txt",O_RDONLY);


if(fd_src <0)


{


printf("errno:%d Info:%s\\r\\n",errno,strerror(errno));


return-1;


}


close(fd_src);


}

運行之后的輸出結(jié)果如下:

圖片

從圖上可以看出來,因為xxxx.txt這個文件是不存在的,用open函數(shù)的只讀的方式打開的話,會返回錯誤編號2,通過strerror函數(shù)返回的錯誤信息是“No such file or directory”,說的是找不到這個文件。

當(dāng)然,除了strerror函數(shù)之外,還有一個函數(shù)也是實現(xiàn)一樣的效果的,那就是perror,這個函數(shù)會自動附加一些信息輸出,可以更加方便我們輸出調(diào)試查看信息!

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

    關(guān)注

    4

    文章

    608

    瀏覽量

    29394
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    594

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    文件IO操作時的常見錯誤

    在編程中,我們一般都是要講究一定的使用規(guī)范的。按照一定的規(guī)范編寫代碼,返回運行提示,在代碼運行出現(xiàn)問題時能方便我們能快速的定位到問題的所在。
    發(fā)表于 01-11 15:36 ?1877次閱讀
    <b class='flag-5'>文件</b><b class='flag-5'>IO</b><b class='flag-5'>操作</b>時的常見<b class='flag-5'>錯誤</b>

    makefile文件出現(xiàn)錯誤提示 求解

    我在編譯簡單的驅(qū)動程序框架時makefile文件出現(xiàn)cc1: error: invalid option `abi=apcs-gnu'錯誤提示。大家看下怎么回事???makefile
    發(fā)表于 03-18 10:17

    用primace測試vhd文件提示錯誤的解決辦法?

    Error:CMD_ERR_033: Cannot find current_design 'XZJ'! 用primace測試vhd文件提示如下錯誤
    發(fā)表于 06-16 09:03

    硬盤故障提示

    硬盤故障提示 (1)Date error(數(shù)據(jù)錯誤) 從軟盤或硬盤上讀取的數(shù)據(jù)存在不可修復(fù)錯誤,磁盤上有壞扇區(qū)和壞的文件分配
    發(fā)表于 01-08 09:37 ?1784次閱讀

    電腦錯誤信息的中文解讀

    電腦各種錯誤信息的中文意思 一、BIOS中的提示信息 提示信息 說明 Drive A error 驅(qū)動器A錯誤 System halt 系統(tǒng)
    發(fā)表于 02-11 17:32 ?762次下載

    Bada系統(tǒng)學(xué)習(xí)-錯誤碼(Error Codes)

    of an error code下表描述了錯誤碼的詳情? Table: Error codes Error code
    發(fā)表于 04-02 14:35 ?929次閱讀

    STM32F1的ADC2如何使用DMA功能 USART過載錯誤Overrun error

    STM32F1的ADC2如何使用DMA功能,USART過載錯誤Overrun error
    的頭像 發(fā)表于 03-14 14:42 ?8997次閱讀
    STM32F1的ADC2如何使用DMA功能 USART過載<b class='flag-5'>錯誤</b>Overrun <b class='flag-5'>error</b>

    【MCU】MDK錯誤error in include chain (cmsis_armcc.h):expected identifier or ‘(‘

    【MCU】MDK錯誤error in include chain (cmsis_armcc.h):expected identifier or ‘(‘
    發(fā)表于 11-30 19:51 ?18次下載
    【MCU】MDK<b class='flag-5'>錯誤</b>:<b class='flag-5'>error</b> in include chain (cmsis_armcc.h):expected identifier or ‘(‘

    Keil編譯時提示“main.c(16): error C129: missing ';' before 'num'”

    Keil編譯時提示“main.c(16): error C129: missing ‘;’ before ‘num’”折騰了很久才知道是前面的“typedef unsigned char u8
    發(fā)表于 12-17 18:10 ?16次下載
    Keil編譯時<b class='flag-5'>提示</b>“main.c(16): <b class='flag-5'>error</b> C129: missing ';' before 'num'”

    error:expected identifier before ‘(‘ token,結(jié)構(gòu)體指針宏定義錯誤

    error:expected identifier before ‘(’ token,結(jié)構(gòu)體指針宏定義錯誤編譯時彈出標(biāo)題所示錯誤,一般為宏定義里有與其他地方重復(fù)的常量符號。找出名字重復(fù)的符號并修改
    發(fā)表于 01-13 15:42 ?11次下載
    <b class='flag-5'>error</b>:expected identifier before ‘(‘ token,結(jié)構(gòu)體指針宏定義<b class='flag-5'>錯誤</b>

    Linux下文件IO相關(guān)操作

    Linux - 基礎(chǔ) IO 文件 IO 相關(guān)操作 stdin stdout stderr 系統(tǒng)文件 I/O
    發(fā)表于 08-11 11:55 ?767次閱讀

    pip安裝時 fatal error C1083 無法打開包括文件io.h” No such file or directory

    原文鏈接 報錯 使用pip安裝模塊,出現(xiàn)錯誤: c:\\users\\anaconda3\\include\\pyconfig.h(68): fatal error C1083: 無法打開包括文件
    的頭像 發(fā)表于 01-12 11:24 ?4453次閱讀

    嵌入式Linux學(xué)習(xí)筆記:文件IO

    在linux中一切都叫文件,比如普通文件,設(shè)備文件,管道。在應(yīng)用層,可以用一套文件IO讀寫文件
    發(fā)表于 06-23 14:25 ?567次閱讀
    嵌入式Linux學(xué)習(xí)筆記:<b class='flag-5'>文件</b><b class='flag-5'>IO</b>

    a javascript error怎么修復(fù)

    修復(fù)"a javascript error"的方法可以因情況而異,但以下是一些常見的解決方法: 檢查錯誤消息 首先,查看瀏覽器控制臺中的錯誤消息。錯誤消息通常會提供
    的頭像 發(fā)表于 11-26 14:41 ?6561次閱讀

    linux打開文本文件命令提示錯誤

    Linux中打開文本文件的命令通常是使用文本編輯器打開,例如常用的命令有 vi 、 vim 、 nano 等。如果在使用其中一個命令時出現(xiàn)錯誤提示,可能有以下幾種原因和解決方法。 錯誤
    的頭像 發(fā)表于 12-22 15:10 ?1438次閱讀