如果文件指针在C中返回NULL,如何确定文件不存在或访问权限不存在?

如果文件指针在C中返回NULL,如何确定文件不存在或访问权限不存在?,c,linux,file-io,C,Linux,File Io,如果文件指针在C中返回NULL,如何确定文件不存在或访问权限不存在?我正在用Linux编写代码。并且该文件没有访问权限,但该文件存在,因此如何返回文件不存在或文件没有访问权限的不同状态 尝试打开文件后,检查errno的值: if (NULL == (fp = fopen("myfile.txt", "r"))) { if (ENOENT != errno) { fprintf(stderr, "Failed to open file: %s\n", strerro

如果文件指针在C中返回NULL,如何确定文件不存在或访问权限不存在?我正在用Linux编写代码。并且该文件没有访问权限,但该文件存在,因此如何返回文件不存在或文件没有访问权限的不同状态

尝试打开文件后,检查
errno
的值:

if (NULL == (fp = fopen("myfile.txt", "r")))
{
    if (ENOENT != errno)
    {
        fprintf(stderr, "Failed to open file: %s\n", strerror(errno));
    }
    else
    {
        fprintf(stderr, "file does not exist\n");
    }
}

不包含相关文件路径的错误消息是我最喜欢的事情之一:if(fp==NULL)perror(path);