新聞中心
在Linux操作系統(tǒng)中,err函數(shù)是一個(gè)非常實(shí)用的函數(shù)之一。這個(gè)函數(shù)可用于顯示與錯(cuò)誤相關(guān)的信息和退出程序,使其成為L(zhǎng)inux編程中必不可少的一部分。但是,如果不正確使用err函數(shù),可能會(huì)導(dǎo)致程序崩潰或無(wú)法正常工作。因此,在本文中,我們將介紹err函數(shù)的正確使用方法,幫助您更好地掌握Linux編程的技巧。

理解err函數(shù)
在開始介紹err函數(shù)的使用方法之前,我們需要先理解它的作用。err函數(shù)是一個(gè)C語(yǔ)言庫(kù)函數(shù),可以在Linux中用于在程序中記錄錯(cuò)誤信息。當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),err函數(shù)會(huì)向標(biāo)準(zhǔn)錯(cuò)誤流中輸出錯(cuò)誤信息并退出程序。err函數(shù)的一般頭文件為 #include
err函數(shù)是基于C語(yǔ)言中的stdarg.h頭文件的可變參數(shù)列表實(shí)現(xiàn)的。因此,當(dāng)使用err函數(shù)時(shí),可以向函數(shù)中添加參數(shù)以指定錯(cuò)誤代碼和錯(cuò)誤信息。例如,下面是一個(gè)使用err函數(shù)顯示錯(cuò)誤信息的代碼示例:
“`c
#include
#include
#include
int mn(int argc, char *argv[])
{
// read file
FILE *fp = fopen(“test.txt”, “r”);
if(fp == NULL)
{
err(EXIT_FLURE, “Error opening file: %s”, “test.txt”);
}
// do something else
printf(“Program executes successfully.\n”);
return EXIT_SUCCESS;
}
“`
在上面的代碼示例中,在打開test.txt文件時(shí),如果文件不存在,err函數(shù)將向標(biāo)準(zhǔn)錯(cuò)誤流中輸出錯(cuò)誤信息,并退出程序。
正確使用err函數(shù)
當(dāng)使用err函數(shù)時(shí),有幾個(gè)注意事項(xiàng)需要牢記。
1. 提供有意義的錯(cuò)誤信息
當(dāng)程序出現(xiàn)錯(cuò)誤時(shí),err函數(shù)向標(biāo)準(zhǔn)錯(cuò)誤流中輸出的錯(cuò)誤信息對(duì)于調(diào)試和故障排除非常有用。因此,提供有意義的錯(cuò)誤信息對(duì)于調(diào)試程序至關(guān)重要。在上面的示例中,err函數(shù)提供了一個(gè)錯(cuò)誤消息:“Error opening file: %s”。它向用戶說(shuō)明了打開文件失敗的原因。
2. 給出有意義的錯(cuò)誤代碼
err函數(shù)在向標(biāo)準(zhǔn)錯(cuò)誤流中輸出錯(cuò)誤信息時(shí)還會(huì)提供錯(cuò)誤代碼。這些錯(cuò)誤代碼可以幫助調(diào)用err函數(shù)的程序自動(dòng)識(shí)別錯(cuò)誤類型。例如,EXIT_FLURE是一種在文件I/O操作中經(jīng)常使用的錯(cuò)誤代碼。在上述代碼實(shí)例中,err函數(shù)使用了這個(gè)代碼以指明錯(cuò)誤的類型。
3. 盡可能在主函數(shù)中調(diào)用err函數(shù)
盡可能在主函數(shù)中調(diào)用err函數(shù)可使錯(cuò)誤信息更容易地捕獲和處理。因此,盡可能地避免在庫(kù)函數(shù)或子函數(shù)中調(diào)用err函數(shù)。
4. 不要使用exit函數(shù)
err函數(shù)將在輸出到標(biāo)準(zhǔn)錯(cuò)誤流后調(diào)用exit函數(shù),因此不再需要在err函數(shù)之后添加調(diào)用exit函數(shù)。
5. 不要忽略返回值
如同任何其他函數(shù),err函數(shù)也會(huì)提供返回值。因此,一定不要忽略err函數(shù)返回的值。
結(jié)論
成都網(wǎng)站建設(shè)公司-創(chuàng)新互聯(lián),建站經(jīng)驗(yàn)豐富以策略為先導(dǎo)10多年以來(lái)專注數(shù)字化網(wǎng)站建設(shè),提供企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),響應(yīng)式網(wǎng)站制作,設(shè)計(jì)師量身打造品牌風(fēng)格,熱線:028-86922220linux中編程中errno != EINTR
在linuxC的read函數(shù)中,errno = EINTR時(shí)圓腔表示因?yàn)橹袛喽鴷和?。那么這個(gè)if的條件句意思橘猛衫是返回值為-1并且不是由于中斷而停止調(diào)用知纖的意思。
linux標(biāo)準(zhǔn)輸入輸出
linux中有三種標(biāo)準(zhǔn)輸入輸出,分別是STDIN,STDOUT,STDERR,對(duì)應(yīng)的數(shù)字是0,1,2。
STDIN是標(biāo)準(zhǔn)輸入,默認(rèn)從鍵盤讀取信息;
STDOUT是標(biāo)準(zhǔn)輸出,默認(rèn)將輸出結(jié)果輸出至終端;
STDERR是標(biāo)準(zhǔn)錯(cuò)誤,默認(rèn)將輸出結(jié)果輸出至終端。
由于STDOUT與STDERR都會(huì)默認(rèn)顯示在終端上,為了區(qū)分,就有了編號(hào)的0,1,2的定義,用1表示STDOUT,2表示STDERR。
2>&1,指將標(biāo)準(zhǔn)輸出、標(biāo)準(zhǔn)錯(cuò)誤指定為同一輸出路徑
舉輪坦栗子:
eg1:cat >>filetest 2>&1 find.out 2>find.err,會(huì)將STDOUT與STDERR分別存放至find.out和find.err中。該命令也可以寫成下面三種形式
find /etc -name passwd 1>find.out 2>find.err
find /etc -name passwd 2>find.err >find.out
find /etc -name passwd 2>find.err 1>find.out
3、若要將所有標(biāo)準(zhǔn)輸出及標(biāo)毀告準(zhǔn)錯(cuò)誤都輸出至文件,可用&表示全部1和2的信息,eg:
find /etc -name passwd &>find.all 或 find /etc -name passwd >find.all 2>&1
4、2>&1 —標(biāo)準(zhǔn)錯(cuò)誤重新定向到標(biāo)準(zhǔn)輸出
5、用法:臘余桐find /etc -name passwd &2>&1 |less
可分解成
find /etc -name passwd & 表示前面的命令放到后臺(tái)執(zhí)行。
2>&1 |less 表示將標(biāo)準(zhǔn)錯(cuò)誤重定向至標(biāo)準(zhǔn)輸出,并用less進(jìn)行分頁(yè)顯示
關(guān)于linux err()()的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。
創(chuàng)新互聯(lián)【028-86922220】值得信賴的成都網(wǎng)站建設(shè)公司。多年持續(xù)為眾多企業(yè)提供成都網(wǎng)站建設(shè),成都品牌建站設(shè)計(jì),成都高端網(wǎng)站制作開發(fā),SEO優(yōu)化排名推廣服務(wù),全網(wǎng)營(yíng)銷讓企業(yè)網(wǎng)站產(chǎn)生價(jià)值。
分享文章:Linux專業(yè)技巧:err函數(shù)的正確使用方法(linuxerr())
標(biāo)題路徑:http://m.5511xx.com/article/cogscjg.html


咨詢
建站咨詢
