gpt4 book ai didi

c - 在 Unix 中获取 errno EACCES

转载 作者:可可西里 更新时间:2023-11-01 17:02:22 25 4
gpt4 key购买 nike

我正在用 C 编写一个简化的 HTTP 服务器,但我一直在生成 403 Forbidden 错误。例如,如果我进入一个名为“docs”的目录,并且用户正在请求其中的“foo.html”文件,如果该文件没有读取权限,服务器应该返回 403 错误。这是我处理这个问题的代码:

struct stat buf;
int error, status;

chdir("./docs/");
if(status = lstat(name, &buf) < 0) { //name == "foo.html"
error = errno;
}
chdir("..");
fprintf(stderr, "error: %s\n", strerror(errno)); //Prints "success" when it should be
//"Permission denied"
if(error == EACCES) {
fprintf(stderr, "403 Forbidden");
}

尽管从命令行在 docs 目录中运行命令“chmod 000 foo.html”,但我还是遇到了这个问题。我一直对这个错误感到困惑,找不到可能的来源。

最佳答案

stat() 和 lstat() 尝试读取文件 - 它们只是从相应的目录条目中读取关于文件的信息。

如果组成路径的目录之一对您的程序不可读,您只会收到 EACCES 错误。

关于c - 在 Unix 中获取 errno EACCES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22434356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com