2012-07-13 10:39:38 xiaocaichonga 阅读数 2223

errorno在linux中是一个整型左值,当UNIX函数出错时,其被赋予一个整型常量,这些常量均以E开头。

关于errno的两个规则与两个函数

1.两个规则:①,如果没有出错,则其值不会被一个例程清除,仅当函数的返回值指明出错时,才检验其值。

②,任一函数不会将errno的值设置为0.

2.两个函数:①#include <string.h>

char *strerror(int errnum);

②#include <stdio.h>

void perror(const char *msg);

首先输出由msg指向的字符串,然后一个冒号,一个空格,接着是应于errno值的出粗信息,最后是一个换行符。


参考文献:《unix 环境高级编程》 第二版

2017-05-04 14:47:53 qq_32087569 阅读数 365

提示一下:这个error number 就是系统的错误号,也是程序里的errorno

附上Linux的 错误码信息

errno.00 is: Success 成功
errno.01 is: Operation not permitted 不允许此类操作
errno.02 is: No such file or directory 没有此文件或目录
errno.03 is: No such process 没有此进程
errno.04 is: Interrupted system call 中断系统调用
errno.05 is: Input/output error 输入输出错误
errno.06 is: No such device or address 没有此设备或地址
errno.07 is: Argument list too long 参数过长
errno.08 is: Exec format error 执行格式错误
errno.09 is: Bad file descriptor 无效的文件描述符
errno.10 is: No child processes 不存在子进程
errno.11 is: Resource temporarily unavailable 资源暂时不可用
errno.12 is: Cannot allocate memory 分配内存失败
errno.13 is: Permission denied 权限错误
errno.14 is: Bad address 地址错误
errno.15 is: Block device required 块设备请求
errno.16 is: Device or resource busy 设备或资源忙
errno.17 is: File exists 文件已经存在
errno.18 is: Invalid cross-device link 无效的交叉连接设备
errno.19 is: No such device 没有此设备
errno.20 is: Not a directory 不是一个目录
errno.21 is: Is a directory 是一个目录
errno.22 is: Invalid argument 参数非法
errno.23 is: Too many open files in system 系统打开文件太多
errno.24 is: Too many open files 打开文件太多
errno.25 is: Inappropriate ioctl for device 设备部支持该操作
errno.26 is: Text file busy 文本文件忙
errno.27 is: File too large 文件太大
errno.28 is: No space left on device 设备没有空间,一般为存储设备
errno.29 is: Illegal seek 非法的seek操作
errno.30 is: Read-only file system 只读文件系统
errno.31 is: Too many links 太多连接
errno.32 is: Broken pipe 管道破裂
errno.33 is: Numerical argument out of domain 数值参数超出取值范围
errno.34 is: Numerical result out of range 数值结果超出取值范围
errno.35 is: Resource deadlock avoided 资源死锁
errno.36 is: File name too long 文件名太长
errno.37 is: No locks available 没有可用的锁
errno.38 is: Function not implemented 函数没有执行
errno.39 is: Directory not empty 目录非空
errno.40 is: Too many levels of symbolic links 太多级符号连接
errno.41 is: Unknown error 41 41未知错误
errno.42 is: No message of desired type 不被接受的消息类型
errno.43 is: Identifier removed 标识符已被删除
errno.44 is: Channel number out of range 。。。
errno.45 is: Level 2 not synchronized
errno.46 is: Level 3 halted
errno.47 is: Level 3 reset
errno.48 is: Link number out of range
errno.49 is: Protocol driver not attached
errno.50 is: No CSI structure available
errno.51 is: Level 2 halted
errno.52 is: Invalid exchange
errno.53 is: Invalid request descriptor
errno.54 is: Exchange full
errno.55 is: No anode
errno.56 is: Invalid request code
errno.57 is: Invalid slot
errno.58 is: Unknown error 58
errno.59 is: Bad font file format
errno.60 is: Device not a stream
errno.61 is: No data available
errno.62 is: Timer expired
errno.63 is: Out of streams resources
errno.64 is: Machine is not on the network
errno.65 is: Package not installed
errno.66 is: Object is remote
errno.67 is: Link has been severed
errno.68 is: Advertise error
errno.69 is: Srmount error
errno.70 is: Communication error on send
errno.71 is: Protocol error
errno.72 is: Multihop attempted
errno.73 is: RFS specific error
errno.74 is: Bad message
errno.75 is: Value too large for defined data type
errno.76 is: Name not unique on network
errno.77 is: File descriptor in bad state
errno.78 is: Remote address changed
errno.79 is: Can not access a needed shared library
errno.80 is: Accessing a corrupted shared library
errno.81 is: .lib secion in a.out corrupted
errno.82 is: Attempting to link in too many shared libraries
errno.83 is: Cannot exec a shared library directly
errno.84 is: Invalid or incomplete multibyte or wide character
errno.85 is: Interrupted system call should be restarted
errno.86 is: Streams pipe error
errno.87 is: Too many users
errno.88 is: Socket operation on non-socket
errno.89 is: Destination address required
errno.90 is: Message too long
errno.91 is: Protocol wrong type for socket
errno.92 is: Protocol not available
errno.93 is: Protocol not supported
errno.94 is: Socket type not supported
errno.95 is: Operation not supported
errno.96 is: Protocol family not supported
errno.97 is: Address family not supported by protocol
errno.98 is: Address already in use
errno.99 is: Cannot assign requested address
errno.100 is: Network is down
errno.101 is: Network is unreachable
errno.102 is: Network dropped connection on reset
errno.103 is: Software caused connection abort
errno.104 is: Connection reset by peer
errno.105 is: No buffer space available
errno.106 is: Transport endpoint is already connected
errno.107 is: Transport endpoint is not connected
errno.108 is: Cannot send after transport endpoint shutdown
errno.109 is: Too many references: cannot splice
errno.110 is: Connection timed out
errno.111 is: Connection refused
errno.112 is: Host is down
errno.113 is: No route to host
errno.114 is: Operation already in progress
errno.115 is: Operation now in progress
errno.116 is: Stale NFS file handle
errno.117 is: Structure needs cleaning
errno.118 is: Not a XENIX named type file
errno.119 is: No XENIX semaphores available
errno.120 is: Is a named type file
errno.121 is: Remote I/O error
errno.122 is: Disk quota exceeded
errno.123 is: No medium found
errno.124 is: Wrong medium type
errno.125 is: Operation canceled
errno.126 is: Required key not available
errno.127 is: Key has expired
errno.128 is: Key has been revoked
errno.129 is: Key was rejected by service
errno.130 is: Owner died
errno.131 is: State not recoverable
errno.132 is: Unknown error 132
132-255全是Unknown error

windows的错误码信息

Number Macro Description
1 ERROR_INVALID_FUNCTION Incorrect function.
2 ERROR_FILE_NOT_FOUND The system cannot find the file specified.
3 ERROR_PATH_NOT_FOUND The system cannot find the path specified.
4 ERROR_TOO_MANY_OPEN_FILES The system cannot open the file.
5 ERROR_ACCESS_DENIED Access is denied.
6 ERROR_INVALID_HANDLE The handle is invalid.
7 ERROR_ARENA_TRASHED The storage control blocks were destroyed.
8 RROR_NOT_ENOUGH_MEMORY Not enough storage is available to process this command.
9 ERROR_INVALID_BLOCK The storage control block address is invalid.
10 ERROR_BAD_ENVIRONMENT The environment is incorrect.
11 ERROR_BAD_FORMAT An attempt was made to load a program with an incorrect format.
12 ERROR_INVALID_ACCESS The access code is invalid.
13 ERROR_INVALID_DATA The data is invalid.
14 ERROR_OUTOFMEMORY Not enough storage is available to complete this operation.
15 ERROR_INVALID_DRIVE The system cannot find the drive specified.
16 ERROR_CURRENT_DIRECTORY The directory cannot be removed.
17 ERROR_NOT_SAME_DEVICE The system cannot move the file to a different disk drive.
18 ERROR_NO_MORE_FILES There are no more files.
19 ERROR_WRITE_PROTECT The media is write protected.
20 ERROR_BAD_UNIT The system cannot find the device specified.
21 ERROR_NOT_READY The device is not ready.
22 ERROR_BAD_COMMAND The device does not recognize the command.
23 ERROR_CRC Data error (cyclic redundancy check).
24 ERROR_BAD_LENGTH The program issued a command but the command length is incorrect.
25 ERROR_SEEK The drive cannot locate a specific area or track on the disk.
26 ERROR_NOT_DOS_DISK The specified disk or diskette cannot be accessed.
27 ERROR_SECTOR_NOT_FOUND The drive cannot find the sector requested.
28 ERROR_OUT_OF_PAPER he printer is out of paper.
29 ERROR_WRITE_FAULT The system cannot write to the specified device.
30 ERROR_READ_FAULT The system cannot read from the specified device.
31 ERROR_GEN_FAILURE A device attached to the system is not functioning.
32 ERROR_SHARING_VIOLATION The process cannot access the file because it is being used by another process.
33 ERROR_LOCK_VIOLATION The process cannot access the file because another process has locked a portion of the file.
34 ERROR_WRONG_DISK The wrong diskette is in the drive. Insert %2 (Volume Serial Number: %3) into drive %1.
36 ERROR_SHARING_BUFFER_EXCEEDED Too many files opened for sharing.
38 ERROR_HANDLE_EOF Reached the end of the file.
39 ERROR_HANDLE_DISK_FULL The disk is full.
87 ERROR_INVALID_PARAMETER The parameter is incorrect.
112 ERROR_DISK_FULL The disk is full.
123 ERROR_INVALID_NAME The file name, directory name, or volume label syntax is incorrect.
1450 ERROR_NO_SYSTEM_RESOURCES Insufficient system resources exist to complete the requested service
2019-11-14 14:48:24 lulu890308 阅读数 47

最近项目一直到Docker环境部署,之前一直正常运行的程序突然出现 msgrcv函数 返回 errorno 13 'permission denied 的
错误,且一直频繁打印该错误,尝试了各种方法和阅读man手册后,找到了改问题的解决办法,主要就是需要在 msgget函数中 设置一下权限,附demo源码,在docker运行正常(demo可以直接运行)

  • msgget函数的flag设置为 IPC_CREAT|S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH 或者 IPC_CREAT|00666
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>
#include <errno.h>
#include <signal.h>
#include <algorithm>
#include <iostream>
#include <sys/stat.h>

int g_msgId = 0;
bool g_exit = false;

struct MsgType {
	long msgType;
	char buffer[64];
};

void* thread_fun(void* parg) {

	//create message queue
	MsgType msg;
	key_t key;
	int msgid;

	key = ftok(".", 1);
	if (-1 == key) {
		printf("ftok error %d\n", errno);
		return NULL;
	}
	else {
		printf("Get message key:%d\n", key);
	}

	//Flag 'S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH' need in docker
	//Otherwise, pemission denied error will occur
	msgid = msgget(key, IPC_CREAT|S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH);
	if (-1 == msgid) {
		printf("msgget error:%d\n", errno);
		return NULL;
	}
	else {
		printf("Get msgid:%d\n", msgid);
	}

	g_msgId = msgid;

	while (!g_exit) {
		printf("wait for message\n");
		ssize_t msgLen = msgrcv(msgid, &msg, sizeof(MsgType) - sizeof(long), 1, 0);
		sleep(1);
		if (-1 == msgLen) {
			printf("msgrcv error:%d\n", errno);
		} else {
			printf("received message:%s\n", msg.buffer);
		}
	}
	printf("thread[%d] exit now\n", msgid);
	return NULL;
}


void Start() {
	pthread_t id =  0;
	std::cout << "Start" << std::endl;
	pthread_attr_t init;
	pthread_attr_init(&init);
	pthread_create(&id, NULL, thread_fun, NULL);
	pthread_attr_setdetachstate(&init, PTHREAD_CREATE_DETACHED);
	std::cout << "Thread id:" << id << std::endl;
}


void SendMsg(const char* szMsg) {
	MsgType msg;
	msg.msgType = 1;
	strcpy(msg.buffer, szMsg);
	int nRes = msgsnd(g_msgId, &msg, sizeof(MsgType) - sizeof(long), 0);
	if (-1 == nRes) {
		printf("msgsnd error:%d", errno);
	} else {
		std::cout << "msgsnd success" << std::endl;
	}
}

int main()
{
	int index = 0;
	std::cout << "I am start now.";
	Start();
	while (true)
	{
		int code;
		std::cout << "Please input a key... 0:exit" << std::endl;
		std::cin >> code;
		if (0 == code) {
			break;
		}
		else {			
			SendMsg("A test message");
		}
	}
	SendMsg("exit");
	g_exit = true;
	std::cout << "I am exit now" << std::endl;
	sleep(2);
    return 0;
}
2013-04-07 20:27:30 azure_2009 阅读数 860

 

常见的Linux系统错误码,即errorno的值 
1 EPERM 	  	Operation not permitted //操作不许可  
2 ENOENT 		No such file or directory //无此文件或目录  
3 ESRCH		No such process //无此过程  
4 EINTR  		Interrupted system call //系统调用被禁止  
5 EIO  		I/O error I/O //错误  
6 ENXIO  		No such device or address //无此器件或地址  
7 E2BIG  		Arg list too long Arg //列表太长 
8 ENOEXEC  	Exec format error Exec //格式错误  
9 EBADF  		Bad file number //文件数目错误 
10 ECHILD 	No child processes //无子过程 
11 EAGAIN 	Try again //再试一遍 
12 ENOMEM 	Out of memory  //内存溢出 
13 EACCES 	Permission denied  //许可拒绝 
14 EFAULT 	Bad address // 错误的地址 
15 ENOTBLK 	Block device required// 需要块设备 
16 EBUSY 		Device or resource busy // 设备或资源忙 
17 EEXIST 	File exists // 文件存在 
18 EXDEV 		Cross-device link // 跨器链接 
19 ENODEV 	No such device // 无此设备 
20 ENOTDIR 	Not a directory // 不是一个目录 
21 EISDIR 	Is a directory // 是一个目录 
22 EINVAL 	Invalid argument  //无效的函数自变量 
23 ENFILE 	File table overflow // 文件表溢出 
24 EMFILE 	Too many open files //打开的文件太多 
25 ENOTTY 	Inappropriate ioctl for device  
26 ETXTBSY 	Text file busy  //文本文件忙 
27 EFBIG 		File too large //文件太大 
28 ENOSPC 	No space left on device // 磁盘空间不足 
29 ESPIPE  	Illegal seek // 不合法的寻找 
30 EROFS  	Read-only file system // 只读文件系统 
31 EMLINK 	Too many links// 太多的链接  

2012-02-07 09:43:27 foxox 阅读数 61
我使用过的Linux命令之perror - 解释错误代码

博客分类:
Linux命令

LinuxMySQLCentOSerrnoperror
我使用过的Linux命令之perror - 解释错误代码

本文链接:http://codingstandards.iteye.com/blog/1127327 (转载请注明出处)


用途说明

perror命令是MySQL数据库系统中的一个工具程序,它用于打印C语言中errno错误代码的含义、也可以打印MySQL中存储引擎错误代码的含义。(perror prints a description for a system error code or for a storage engine (table handler) error code.)



由于perror是MySQL中的一个工具程序,在没有安装MySQL的机器上就无法执行,本文的示例四将给出大致的源代码供大家参考。


常用参数

格式:perror <errno>

打印系统错误代码errno值的含义。



格式:perror <Errcode>

打印MySQL数据库系统中定义的错误代码的含义。



格式:perror <err1> <err2> ...

打印多个错误代码的含义。


man perror 写道
For most system errors, MySQL displays, in addition to an internal text message, the system error code in one
of the following styles:

message ... (errno: #)
message ... (Errcode: #)


Linux操作系统中定义的errno值如下所示。
errno.h 写道
#define EPERM 1 /* Operation not permitted */
#define ENOENT 2 /* No such file or directory */
#define ESRCH 3 /* No such process */
#define EINTR 4 /* Interrupted system call */
#define EIO 5 /* I/O error */
#define ENXIO 6 /* No such device or address */
#define E2BIG 7 /* Arg list too long */
#define ENOEXEC 8 /* Exec format error */
#define EBADF 9 /* Bad file number */
#define ECHILD 10 /* No child processes */
#define EAGAIN 11 /* Try again */
#define ENOMEM 12 /* Out of memory */
#define EACCES 13 /* Permission denied */
#define EFAULT 14 /* Bad address */
#define ENOTBLK 15 /* Block device required */
#define EBUSY 16 /* Device or resource busy */
#define EEXIST 17 /* File exists */
#define EXDEV 18 /* Cross-device link */
#define ENODEV 19 /* No such device */
#define ENOTDIR 20 /* Not a directory */
#define EISDIR 21 /* Is a directory */
#define EINVAL 22 /* Invalid argument */
#define ENFILE 23 /* File table overflow */
#define EMFILE 24 /* Too many open files */
#define ENOTTY 25 /* Not a typewriter */
#define ETXTBSY 26 /* Text file busy */
#define EFBIG 27 /* File too large */
#define ENOSPC 28 /* No space left on device */
#define ESPIPE 29 /* Illegal seek */
#define EROFS 30 /* Read-only file system */
#define EMLINK 31 /* Too many links */
#define EPIPE 32 /* Broken pipe */
#define EDOM 33 /* Math argument out of domain of func */
#define ERANGE 34 /* Math result not representable */
#define EDEADLK 35 /* Resource deadlock would occur */
#define ENAMETOOLONG 36 /* File name too long */
#define ENOLCK 37 /* No record locks available */
#define ENOSYS 38 /* Function not implemented */
#define ENOTEMPTY 39 /* Directory not empty */
#define ELOOP 40 /* Too many symbolic links encountered */
#define EWOULDBLOCK EAGAIN /* Operation would block */
#define ENOMSG 42 /* No message of desired type */
#define EIDRM 43 /* Identifier removed */
#define ECHRNG 44 /* Channel number out of range */
#define EL2NSYNC 45 /* Level 2 not synchronized */
#define EL3HLT 46 /* Level 3 halted */
#define EL3RST 47 /* Level 3 reset */
#define ELNRNG 48 /* Link number out of range */
#define EUNATCH 49 /* Protocol driver not attached */
#define ENOCSI 50 /* No CSI structure available */
#define EL2HLT 51 /* Level 2 halted */
#define EBADE 52 /* Invalid exchange */
#define EBADR 53 /* Invalid request descriptor */
#define EXFULL 54 /* Exchange full */
#define ENOANO 55 /* No anode */
#define EBADRQC 56 /* Invalid request code */
#define EBADSLT 57 /* Invalid slot */
#define EDEADLOCK EDEADLK
#define EBFONT 59 /* Bad font file format */
#define ENOSTR 60 /* Device not a stream */
#define ENODATA 61 /* No data available */
#define ETIME 62 /* Timer expired */
#define ENOSR 63 /* Out of streams resources */
#define ENONET 64 /* Machine is not on the network */
#define ENOPKG 65 /* Package not installed */
#define EREMOTE 66 /* Object is remote */
#define ENOLINK 67 /* Link has been severed */
#define EADV 68 /* Advertise error */
#define ESRMNT 69 /* Srmount error */
#define ECOMM 70 /* Communication error on send */
#define EPROTO 71 /* Protocol error */
#define EMULTIHOP 72 /* Multihop attempted */
#define EDOTDOT 73 /* RFS specific error */
#define EBADMSG 74 /* Not a data message */
#define EOVERFLOW 75 /* Value too large for defined data type */
#define ENOTUNIQ 76 /* Name not unique on network */
#define EBADFD 77 /* File descriptor in bad state */
#define EREMCHG 78 /* Remote address changed */
#define ELIBACC 79 /* Can not access a needed shared library */
#define ELIBBAD 80 /* Accessing a corrupted shared library */
#define ELIBSCN 81 /* .lib section in a.out corrupted */
#define ELIBMAX 82 /* Attempting to link in too many shared libraries */
#define ELIBEXEC 83 /* Cannot exec a shared library directly */
#define EILSEQ 84 /* Illegal byte sequence */
#define ERESTART 85 /* Interrupted system call should be restarted */
#define ESTRPIPE 86 /* Streams pipe error */
#define EUSERS 87 /* Too many users */
#define ENOTSOCK 88 /* Socket operation on non-socket */
#define EDESTADDRREQ 89 /* Destination address required */
#define EMSGSIZE 90 /* Message too long */
#define EPROTOTYPE 91 /* Protocol wrong type for socket */
#define ENOPROTOOPT 92 /* Protocol not available */
#define EPROTONOSUPPORT 93 /* Protocol not supported */
#define ESOCKTNOSUPPORT 94 /* Socket type not supported */
#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
#define EPFNOSUPPORT 96 /* Protocol family not supported */
#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
#define EADDRINUSE 98 /* Address already in use */
#define EADDRNOTAVAIL 99 /* Cannot assign requested address */
#define ENETDOWN 100 /* Network is down */
#define ENETUNREACH 101 /* Network is unreachable */
#define ENETRESET 102 /* Network dropped connection because of reset */
#define ECONNABORTED 103 /* Software caused connection abort */
#define ECONNRESET 104 /* Connection reset by peer */
#define ENOBUFS 105 /* No buffer space available */
#define EISCONN 106 /* Transport endpoint is already connected */
#define ENOTCONN 107 /* Transport endpoint is not connected */
#define ESHUTDOWN 108 /* Cannot send after transport endpoint shutdown */
#define ETOOMANYREFS 109 /* Too many references: cannot splice */
#define ETIMEDOUT 110 /* Connection timed out */
#define ECONNREFUSED 111 /* Connection refused */
#define EHOSTDOWN 112 /* Host is down */
#define EHOSTUNREACH 113 /* No route to host */
#define EALREADY 114 /* Operation already in progress */
#define EINPROGRESS 115 /* Operation now in progress */
#define ESTALE 116 /* Stale NFS file handle */
#define EUCLEAN 117 /* Structure needs cleaning */
#define ENOTNAM 118 /* Not a XENIX named type file */
#define ENAVAIL 119 /* No XENIX semaphores available */
#define EISNAM 120 /* Is a named type file */
#define EREMOTEIO 121 /* Remote I/O error */
#define EDQUOT 122 /* Quota exceeded */
#define ENOMEDIUM 123 /* No medium found */
#define EMEDIUMTYPE 124 /* Wrong medium type */





使用示例
示例一 打印错误代码的含义

# perror 1
OS error code 1: Operation not permitted

#define EPERM 1 /* Operation not permitted */
# perror 13 64
OS error code 13: Permission denied
OS error code 64: Machine is not on the network

#define EACCES 13 /* Permission denied */

#define ENONET 64 /* Machine is not on the network */
#

补充一个:既是操作系统errno,也是MySQL错误代码的。

# perror 121
OS error code 121: Remote I/O error
MySQL error code 121: Duplicate key on write or update


示例二 打印不存在的错误代码的含义

要注意的是,perror似乎并不能打印SQL执行时所报的错误代码的含义。

mysql> select;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near '' at line 1、



# perror 42000
Illegal error code: 42000
# perror 1064
Illegal error code: 1064
#


示例三 枚举所有错误代码

# for i in $(seq 1 10000); do perror $i; done >10000.txt 2>/dev/null
# cat 10000.txt
OS error code 1: Operation not permitted
OS error code 2: No such file or directory
OS error code 3: No such process
OS error code 4: Interrupted system call
OS error code 5: Input/output error
OS error code 6: No such device or address
OS error code 7: Argument list too long
OS error code 8: Exec format error
OS error code 9: Bad file descriptor
OS error code 10: No child processes
OS error code 11: Resource temporarily unavailable
OS error code 12: Cannot allocate memory
OS error code 13: Permission denied
OS error code 14: Bad address
OS error code 15: Block device required
OS error code 16: Device or resource busy
OS error code 17: File exists
OS error code 18: Invalid cross-device link
OS error code 19: No such device
OS error code 20: Not a directory
OS error code 21: Is a directory
OS error code 22: Invalid argument
OS error code 23: Too many open files in system
OS error code 24: Too many open files
OS error code 25: Inappropriate ioctl for device
OS error code 26: Text file busy
OS error code 27: File too large
OS error code 28: No space left on device
OS error code 29: Illegal seek
OS error code 30: Read-only file system
OS error code 31: Too many links
OS error code 32: Broken pipe
OS error code 33: Numerical argument out of domain
OS error code 34: Numerical result out of range
OS error code 35: Resource deadlock avoided
OS error code 36: File name too long
OS error code 37: No locks available
OS error code 38: Function not implemented
OS error code 39: Directory not empty
OS error code 40: Too many levels of symbolic links
OS error code 42: No message of desired type
OS error code 43: Identifier removed
OS error code 44: Channel number out of range
OS error code 45: Level 2 not synchronized
OS error code 46: Level 3 halted
OS error code 47: Level 3 reset
OS error code 48: Link number out of range
OS error code 49: Protocol driver not attached
OS error code 50: No CSI structure available
OS error code 51: Level 2 halted
OS error code 52: Invalid exchange
OS error code 53: Invalid request descriptor
OS error code 54: Exchange full
OS error code 55: No anode
OS error code 56: Invalid request code
OS error code 57: Invalid slot
OS error code 59: Bad font file format
OS error code 60: Device not a stream
OS error code 61: No data available
OS error code 62: Timer expired
OS error code 63: Out of streams resources
OS error code 64: Machine is not on the network
OS error code 65: Package not installed
OS error code 66: Object is remote
OS error code 67: Link has been severed
OS error code 68: Advertise error
OS error code 69: Srmount error
OS error code 70: Communication error on send
OS error code 71: Protocol error
OS error code 72: Multihop attempted
OS error code 73: RFS specific error
OS error code 74: Bad message
OS error code 75: Value too large for defined data type
OS error code 76: Name not unique on network
OS error code 77: File descriptor in bad state
OS error code 78: Remote address changed
OS error code 79: Can not access a needed shared library
OS error code 80: Accessing a corrupted shared library
OS error code 81: .lib section in a.out corrupted
OS error code 82: Attempting to link in too many shared libraries
OS error code 83: Cannot exec a shared library directly
OS error code 84: Invalid or incomplete multibyte or wide character
OS error code 85: Interrupted system call should be restarted
OS error code 86: Streams pipe error
OS error code 87: Too many users
OS error code 88: Socket operation on non-socket
OS error code 89: Destination address required
OS error code 90: Message too long
OS error code 91: Protocol wrong type for socket
OS error code 92: Protocol not available
OS error code 93: Protocol not supported
OS error code 94: Socket type not supported
OS error code 95: Operation not supported
OS error code 96: Protocol family not supported
OS error code 97: Address family not supported by protocol
OS error code 98: Address already in use
OS error code 99: Cannot assign requested address
OS error code 100: Network is down
OS error code 101: Network is unreachable
OS error code 102: Network dropped connection on reset
OS error code 103: Software caused connection abort
OS error code 104: Connection reset by peer
OS error code 105: No buffer space available
OS error code 106: Transport endpoint is already connected
OS error code 107: Transport endpoint is not connected
OS error code 108: Cannot send after transport endpoint shutdown
OS error code 109: Too many references: cannot splice
OS error code 110: Connection timed out
OS error code 111: Connection refused
OS error code 112: Host is down
OS error code 113: No route to host
OS error code 114: Operation already in progress
OS error code 115: Operation now in progress
OS error code 116: Stale NFS file handle
OS error code 117: Structure needs cleaning
OS error code 118: Not a XENIX named type file
OS error code 119: No XENIX semaphores available
OS error code 120: Is a named type file
MySQL error code 120: Didn't find key on read or update
OS error code 121: Remote I/O error
MySQL error code 121: Duplicate key on write or update
OS error code 122: Disk quota exceeded
MySQL error code 122: Internal (unspecified) error in handler
OS error code 123: No medium found
MySQL error code 123: Someone has changed the row since it was read (while the table was locked to prevent it)
OS error code 124: Wrong medium type
MySQL error code 124: Wrong index given to function
OS error code 125: Operation canceled
MySQL error code 125: Undefined handler error 125
OS error code 126: Required key not available
MySQL error code 126: Index file is crashed
OS error code 127: Key has expired
MySQL error code 127: Record file is crashed
OS error code 128: Key has been revoked
MySQL error code 128: Out of memory in engine
OS error code 129: Key was rejected by service
MySQL error code 129: Undefined handler error 129
OS error code 130: Owner died
MySQL error code 130: Incorrect file format
OS error code 131: State not recoverable
MySQL error code 131: Command not supported by database
MySQL error code 132: Old database file
MySQL error code 133: No record read before update
MySQL error code 134: Record was already deleted (or record file crashed)
MySQL error code 135: No more room in record file
MySQL error code 136: No more room in index file
MySQL error code 137: No more records (read after end of file)
MySQL error code 138: Unsupported extension used for table
MySQL error code 139: Too big row
MySQL error code 140: Wrong create options
MySQL error code 141: Duplicate unique key or constraint on write or update
MySQL error code 142: Unknown character set used in table
MySQL error code 143: Conflicting table definitions in sub-tables of MERGE table
MySQL error code 144: Table is crashed and last repair failed
MySQL error code 145: Table was marked as crashed and should be repaired
MySQL error code 146: Lock timed out; Retry transaction
MySQL error code 147: Lock table is full; Restart program with a larger locktable
MySQL error code 148: Updates are not allowed under a read only transactions
MySQL error code 149: Lock deadlock; Retry transaction
MySQL error code 150: Foreign key constraint is incorrectly formed
MySQL error code 151: Cannot add a child row
MySQL error code 152: Cannot delete a parent row
MySQL error code 153: No savepoint with that name
MySQL error code 154: Non unique key block size
MySQL error code 155: The table does not exist in engine
MySQL error code 156: The table already existed in storage engine
MySQL error code 157: Could not connect to storage engine
MySQL error code 158: Unexpected null pointer found when using spatial index
MySQL error code 159: The table changed in storage engine
MySQL error code 160: There's no partition in table for the given value
MySQL error code 161: Row-based binlogging of row failed
MySQL error code 162: Index needed in foreign key constraint
MySQL error code 163: Upholding foreign key constraints would lead to a duplicate key error in some other table
MySQL error code 164: Table needs to be upgraded before it can be used
MySQL error code 165: Table is read only
MySQL error code 166: Failed to get next auto increment value
MySQL error code 167: Failed to set row auto increment value
MySQL error code 168: Unknown (generic) error from engine
MySQL error code 169: Record is the same
MySQL error code 170: It is not possible to log this statement
MySQL error code 171: The event was corrupt, leading to illegal data being read
MySQL error code 172: The table is of a new format not supported by this version
MySQL error code 173: The event could not be processed no other hanlder error happened
MySQL error code 174: Got a fatal error during initialzaction of handler
MySQL error code 175: File to short; Expected more data in file
MySQL error code 176: Read page with wrong checksum
MySQL error code 177: Too many active concurrent transactions
#


示例四 perror大体的C语言代码

# perror
-bash: perror: command not found
#

# cat >perror.c
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char* argv[])
{
if (argc == 1)
{
fprintf(stderr, "usage: %s <errno> [<errno> ...]\n", argv[0]);
exit(1);
}
else
{
int i;
for (i = 1; i < argc; ++i)
{
int ec = strtoul(argv[i], 0, 0);
fprintf(stdout, "OS error code %d: %s\n", ec, strerror(ec));
}
exit(0);
}
}

# gcc -Wall -o /usr/bin/perror perror.c
# perror 1
OS error code 1: Operation not permitted
#

注:该源代码无法对非法的错误代码进行判断。perror程序在提供的错误代码非法时会在标准错误设备上输出信息,而不是标准输出设备。


问题思考
相关资料

【1】MySQL中文手册 perror — Explain Error Codes

http://dev.mysql.com/doc/refman/5.0/en/perror.html





返回 我使用过的Linux命令系列总目录

Linux Error No.

阅读数 1338

没有更多推荐了,返回首页