【发布时间】:2021-02-02 23:34:27
【问题描述】:
errno 和 EEXIST 是什么意思?
#include<errno.h>
if(errno != EEXIST) {
perror(sha1_dir);
exit(1);
}
我无法理解 if 语句的条件。是说“如果 errno 不存在”吗?
【问题讨论】:
-
字面意思是“如果
errno不等于EEXIST”。 -
现在它没有任何意义。
errno可能由某个函数调用设置(它是一个变量,应该是作用域为线程局部的)。检查函数设置errno以了解EEXIST在该函数上下文中的含义。 -
您可能会发现此页面很有帮助:en.cppreference.com/w/c/error/errno
-
errno是什么取决于您未显示的那一行上方的代码。 -
它的意思是,“如果之前失败的文件访问函数由于其他而不是文件不存在的原因而失败,则打印相关的错误消息并退出。”因此,如果文件存在但由于“权限被拒绝”之类的原因我们无法读取它,那就是错误。但是,如果我们无法读取文件的原因是因为它根本不存在,我们没关系,所以继续。当读取文件是可选的时,这是一种常见模式,例如配置文件或状态文件,用于在程序运行之间保存数据,但在程序第一次运行时不会存在。