linux错误信息的输出

betball贝博app C语言, Linux 500 次浏览 没有评论

在shell中执行echo $?可以返回刚刚结束的进程的返回值,如果找不到指定进程,返回的是127.其原理应该是将eax寄存器中的值输出。所以对于不同的处理器等,可能会有不同的细节效果。

errno是一个环境变量,在代码中先将其置为0,然后执行完毕以后,若函数执行出错,会将错误号赋值到errno中,为0则表示没有出错。

strerror可以将错误号转换成具体的出错信息,printf("%s",strerror(errno));就可以将错误信息输出。

上面的printf语句,可以直接用perror来代替,并且perror会自动加:并在结尾加\n,所以一般使用格式为perror("massage");

[cce_cpp]
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>//O_RDWR

int main()
{
	
	int fd;
	errno=0;
	fd = open("/home/pi/test.txt",O_RDWR);
	if(fd == -1)
	{
		perror("failed");
		printf("No.:%d massage:%s\n",errno,strerror(errno));
		//exit(1);
	}
	close(fd);
	return 0;
}
[/cce_cpp]

执行结果:

failed: No such file or directory
No.:2 massage:No such file or directory

发表评论

邮箱地址不会被公开。

Go