c 中的 if(errno != EEXIST) 是什么?

问题描述

errno 和 EEXIST 是什么意思?

@test test

我无法理解 if 语句的条件。是说“如果 errno 不存在”吗?

解决方法

如果深入研究 errno.h,您会发现 EEXIST 是另一个文件中定义的 C 宏。在我的 Debian PC 上,它位于 /usr/include/asm-generic/errno-base.h

#define EEXIST      17  /* File exists */

运行man errno查找errno变量的含义:

DESCRIPTION
       The  <errno.h> header file defines the integer variable errno,which is
       set by system calls and some library functions in the event of an error
       to indicate what went wrong.

所以代码块的意思是检查最后一个函数生成的errno,如果不是“File exists”(文件不存在),则打印错误信息。

运行 man perror 以获取更多信息。说真的,在向 stackoverflow 提出这样的问题之前,您应该从某本书中学习 C。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...