errno 是c語(yǔ)言中用于記錄系統(tǒng)最后一次錯(cuò)誤的代碼,它是一個(gè)int類型的值,通常在頭文件errno.h中定義。在Linux C API函數(shù)出現(xiàn)異常時(shí),errno會(huì)被賦予特定的整數(shù)值,這些值對(duì)應(yīng)著不同的錯(cuò)誤類型。程序員可以利用errno來(lái)診斷并解決程序中的問(wèn)題。
使用注意事項(xiàng)
使用errno時(shí)需要注意,只有當(dāng)一個(gè)庫(kù)函數(shù)失敗時(shí),errno才會(huì)被設(shè)置。當(dāng)函數(shù)成功運(yùn)行時(shí),errno的值不會(huì)被修改。因此,不能通過(guò)測(cè)試errno的值來(lái)判斷是否存在錯(cuò)誤,而應(yīng)該在被調(diào)用的函數(shù)提示有錯(cuò)誤發(fā)生時(shí)才去檢查errno的值。
錯(cuò)誤定義
errno的錯(cuò)誤定義可以在/usr/include/asm-generic/errno.h及errno-base.h等頭文件中找到。下面是一些常見的錯(cuò)誤定義及其對(duì)應(yīng)的錯(cuò)誤碼:
常見錯(cuò)誤碼
- EPERM 1 表示操作未授權(quán)
- ENOENT 2 表示找不到指定的文件或目錄
- ESRCH 3 表示找不到指定的進(jìn)程
- EINTR 4 表示中斷了系統(tǒng)調(diào)用
- EIO 5 表示I/O錯(cuò)誤
- ENXIO 6 表示沒有相應(yīng)的設(shè)備或地址
- E2BIG 7 表示參數(shù)列表過(guò)長(zhǎng)
- ENOEXEC 8 表示執(zhí)行格式錯(cuò)誤
- EBADF 9 表示無(wú)效的文件描述符
- ECHILD 10 表示無(wú)子進(jìn)程
- EAGAIN 11 表示資源暫時(shí)不可用
- ENOMEM 12 表示內(nèi)存不足
- EACCES 13 表示權(quán)限受限
- EFAULT 14 表示無(wú)效的指針
- ENOTBLK 15 表示塊設(shè)備請(qǐng)求
- EBUSY 16 表示設(shè)備或資源忙
- EEXIST 17 表示文件已存在
- EXDEV 18 表示跨設(shè)備鏈接
- ENODEV 19 表示不存在的設(shè)備
- ENOTDIR 20 表示不是目錄
- EISDIR 21 表示是目錄
- EINVAL 22 表示無(wú)效的參數(shù)
- ENFILE 23 表示文件表溢出
- EMFILE 24 表示打開的文件過(guò)多
- ENOTTY 25 表示非字符設(shè)備
- ETXTBSY 26 表示文本文件繁忙
- EFBIG 27 表示文件過(guò)大
- ENOSPC 28 表示磁盤空間不足
- ESPIPE 29 表示非法的序列號(hào)
- EROFS 30 表示只讀文件系統(tǒng)
- EMLINK 31 表示鏈接數(shù)過(guò)多
- EPIPE 32 表示管道破裂
- EDOM 33 表示數(shù)學(xué)運(yùn)算超出范圍
- ERANGE 34 表示數(shù)學(xué)計(jì)算結(jié)果無(wú)法表示
- EDEADLK 35 表示資源死鎖
- ENAMETOOLONG 36 表示文件名過(guò)長(zhǎng)
- ENOLCK 37 表示無(wú)可用的鎖
- ENOSYS 38 表示功能未實(shí)現(xiàn)
- ENOTEMPTY 39 表示目錄非空
- ELOOP 40 表示符號(hào)鏈接循環(huán)
- EWOULDBLOCK EAGAIN 表示操作可能阻塞
- ENOMSG 42 表示無(wú)相應(yīng)消息
- EIDRM 43 表示標(biāo)識(shí)符已被移除
- ECHRNG 44 表示通道號(hào)超出范圍
- EL2NSYNC 45 表示第2層未同步
- EL3HLT 46 表示第3層暫停
- EL3RST 47 表示第3層重置
- ELNRNG 48 表示鏈路號(hào)超出范圍
- EUNATCH 49 表示協(xié)議驅(qū)動(dòng)未連接
- ENOCSI 50 表示無(wú)CSI結(jié)構(gòu)
- EL2HLT 51 表示第2層暫停
- EBADE 52 表示無(wú)效交換
- EBADR 53 表示無(wú)效請(qǐng)求描述符
- EXFULL 54 表示交換滿載
- ENOANO 55 表示無(wú)節(jié)點(diǎn)
- EBADRQC 56 表示無(wú)效請(qǐng)求碼
- EBADSLT 57 表示無(wú)效槽位
- EDEADLOCK EDEADLK 表示資源死鎖
- EBFONT 59 表示字體文件格式錯(cuò)誤
- ENOSTR 60 表示設(shè)備非流式
- ENODATA 61 表示無(wú)數(shù)據(jù)可用
- ETIME 62 表示定時(shí)器超時(shí)
- ENOSR 63 表示流資源耗盡
- ENONET 64 表示機(jī)器不在網(wǎng)絡(luò)上
- ENOPKG 65 表示包未安裝
- EREMOTE 66 表示對(duì)象遠(yuǎn)程
- ENOLINK 67 表示鏈接斷開
- EADV 68 表示廣告錯(cuò)誤
- ESRMNT 69 表示srmount錯(cuò)誤
- ECOMM 70 表示發(fā)送通信錯(cuò)誤
- EPROTO 71 表示協(xié)議錯(cuò)誤
- EMULTIHOP 72 表示多跳嘗試
- EDOTDOT 73 表示RFS特定錯(cuò)誤
- EBADMSG 74 表示非數(shù)據(jù)報(bào)文
- EOVERFLOW 75 表示值太大
- ENOTUNIQ 76 表示名稱在網(wǎng)絡(luò)中不唯一
- EBADFD 77 表示文件描述符狀態(tài)不良
- EREMCHG 78 表示遠(yuǎn)程地址變更
- ELIBACC 79 表示無(wú)法訪問(wèn)共享庫(kù)
- ELIBBAD 80 表示訪問(wèn)損壞的共享庫(kù)
- ELIBSCN 81 表示.aout中的.lib節(jié)損壞
- ELIBMAX 82 表示嘗試鏈接太多共享庫(kù)
- ELIBEXEC 83 表示無(wú)法直接執(zhí)行共享庫(kù)
- EILSEQ 84 表示非法字節(jié)序列
- ERESTART 85 表示應(yīng)重啟的中斷系統(tǒng)調(diào)用
- ESTRPIPE 86 表示流管道錯(cuò)誤
- EUSERS 87 表示用戶過(guò)多
- ENOTSOCK 88 表示套接字操作非套接字
- EDESTADDRREQ 89 表示目的地址必需
- EMSGSIZE 90 表示消息長(zhǎng)度不當(dāng)
- EPROTOTYPE 91 表示套接字協(xié)議類型不符
- ENOPROTOOPT 92 表示套接字選項(xiàng)不可用
- EPROTONOSUPPORT 93 表示套接字協(xié)議不受支持
- ESOCKTNOSUPPORT 94 表示套接字類型不受支持
- EOPNOTSUPP 95 表示傳輸端口上的操作不受支持
- EPFNOSUPPORT 96 表示套接字協(xié)議族不受支持
- EAFNOSUPPORT 97 表示地址家族不受套接字協(xié)議支持
- EADDRINUSE 98 表示地址已被占用
- EADDRNOTAVAIL 99 表示無(wú)法分配請(qǐng)求的地址
- ENETDOWN 100 表示網(wǎng)絡(luò)已關(guān)閉
- ENETUNREACH 101 表示網(wǎng)絡(luò)不可達(dá)
- ENETRESET 102 表示網(wǎng)絡(luò)因重置而斷開連接
- ECONNABORTED 103 表示軟件導(dǎo)致的連接終止
- ECONNRESET 104 表示對(duì)端復(fù)位連接
- ENOBUFS 105 表示無(wú)緩沖區(qū)可用
- EISCONN 106 表示傳輸端點(diǎn)已連接
- ENOTCONN 107 表示傳輸端點(diǎn)未連接
- ESHUTDOWN 108 表示無(wú)法在傳輸端點(diǎn)關(guān)閉后發(fā)送
- ETOOMANYREFS 109 表示引用過(guò)多,無(wú)法拼接
- ETIMEDOUT 110 表示連接超時(shí)
- ECONNREFUSED 111 表示連接被拒絕
- EHOSTDOWN 112 表示主機(jī)已下線
- EHOSTUNREACH 113 表示無(wú)法到達(dá)主機(jī)
- EALREADY 114 表示操作正在進(jìn)行
- EINPROGRESS 115 表示操作正在處理中
- ESTALE 116 表示NFS文件句柄已失效
- EUCLEAN 117 表示結(jié)構(gòu)需要清理
- ENOTNAM 118 表示非Xenix命名類型文件
- ENAVAIL 119 表示無(wú)XENIX信號(hào)量可用
- EISNAM 120 表示是命名類型文件
- EREMOTEIO 121 表示遠(yuǎn)程I/O錯(cuò)誤
- EDQUOT 122 表示配額超過(guò)限制
- ENOMEDIUM 123 表示介質(zhì)缺失
- EMEDIUMTYPE 124 表示介質(zhì)類型錯(cuò)誤
- ECANCELED 125 表示操作取消
- ENOKEY 126 表示所需密鑰不可用
- EKEYEXPIRED 127 表示密鑰已過(guò)期
- EKEYREVOKED 128 表示密鑰已被撤銷
- EKEYREJECTED 129 表示密鑰被服務(wù)拒絕
- EOWNERDEAD 130 表示所有者死亡
- ENOTRECOVERABLE 131 表示狀態(tài)不可恢復(fù)
- ERFKILL 132 表示由于RF-kill操作不可能
- EHWPOISON 133 表示硬件頁(yè)有錯(cuò)誤
參考資料 >
errno | C語(yǔ)言errno詳細(xì)說(shuō)明: 記錄最后的錯(cuò)誤代碼.愛問(wèn)知識(shí)人.2024-11-01
C標(biāo)準(zhǔn)庫(kù)errno,perror()和strerror().CSDN博客.2024-11-01
C標(biāo)準(zhǔn)庫(kù)中的