linux 程序错误码,Linux编程中接收主函数返回值以及错误码提示

程序A创建子进程,并调用进程B,根据不调用的不同情况,最后显示结果不同。

程序A:

#include

#include

#include

#include

#include

int main() {

pid_t pid, rpid;

int stat;

if ((pid = fork()) < 0) {

perror("fork failue.");

}

printf("pid = %d\n", pid); // 打印子父进程的获得的返回值

if (pid == 0) {

int x = execl("./test123", "./test", NULL);

printf("x = %d\n", x); // execl调用失败返回-1

perror("execl failue"); // 直接使用perror函数输出错误字符串(相比数字,字符串更容易理解)

printf("%s\n", strerror(errno)); // 间接使用strerror输出错误字符串

} else {

rpid = waitpid(-1, &stat, 0); // 等待任意子进程结束

if (WIFEXITED(stat)) { // 状态字拥有24位,一些宏函数对状态字进行解释

printf("rpid = %d, stat = %d\n", rpid, WEXITSTATUS(stat));

}

}

return 0;

}

程序B:

#include

int main(int argc, char **argv) {

printf("hello world.\n");

exit(0x3244); // return与exit均能正常返回,返回值为 int & 0xff

}

调用成功后:

liuxu@kylin:~/projects/webserver$ ./ptest

pid = 4723

pid = 0

hello world.

rpid = 4723, stat = 68

调用失败后:

liuxu@kylin:~/projects/webserver$ ./ptest

pid = 4738

pid = 0

x = -1

execl failue: No such file or directory

No such file or directory

rpid = 4738, stat = 0

PS:error码含义

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

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值