如何检查文件在C中是否被禁止?

如何检查文件在C中是否被禁止?,c,file,http,io,C,File,Http,Io,基本上,我正在处理一个html服务器分配,分配的一部分是给出一个“错误403禁止”消息,虽然我知道如何检查文件是否存在,但我如何检查它是否被禁止 我现在做的是打开一个文件 File* filein = fopen(pathname,"r"); 请让我知道我可以做些什么来检查文件是否被禁止。我认为被禁止的文件是不可访问的(例如chmod 440设置为未运行服务器的用户),因此当您由于缺乏权限而无法打开文件时,您可以通知用户,c中的示例代码: #include <stdio.h> i

基本上,我正在处理一个html服务器分配,分配的一部分是给出一个“错误403禁止”消息,虽然我知道如何检查文件是否存在,但我如何检查它是否被禁止

我现在做的是打开一个文件

File* filein = fopen(pathname,"r");

请让我知道我可以做些什么来检查文件是否被禁止。

我认为被禁止的文件是不可访问的(例如chmod 440设置为未运行服务器的用户),因此当您由于缺乏权限而无法打开文件时,您可以通知用户,c中的示例代码:

#include <stdio.h>

int main()
{
    FILE *file = fopen("file.txt", "r");
    if (file == NULL)
        perror("Error");
    fclose(file);
    return 0;
}
#包括
int main()
{
FILE*FILE=fopen(“FILE.txt”、“r”);
if(file==NULL)
佩罗(“错误”);
fclose(文件);
返回0;
}
请记住使文件无法访问-例如
chmod 000 file.txt

fopen()
如果失败,将返回空指针。根据库的实现,可以设置全局变量
errno
,以指示故障原因

通常,无效的文件权限会导致
EACCES
错误,因此在失败的
fopen()
之后,检查
errno
是否等于
EACCES
(请记住
#包括
)。如果不是,则可能由于与文件权限无关的其他错误而无法修复


“这是一个包含一些其他错误常量的页面,您可以进行检查。

我是否只需在尝试打开fopen后执行类似if(errno==EACCES)的操作即可进行检查?是的,这是正确的
errno
是一个整数,因此您可以使用与任何其他整数相同的方式比较错误代码。您可以检查errno值,只需记住导入errno.h。用
printf(“%d”,errno)检查不同的错误代码。如果没有这样的文件,错误代码是2,如果您没有打开它的权限,错误代码是13,或者像您刚才问的那样,
if(errno==EACCES)
也可以工作