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。