注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

融智技术学院

融智技术学院163分站,为广大好友提供更多的帮助

 
 
 

日志

 
 

【C语言每日一问】在Unix上得到errno EACCES  

2014-05-28 13:17:05|  分类: C语言 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

问题:

我正在写一个简单的HTTP服务,使用C语言,我被生成的403禁止错误困住了。例如,我进入到一个名为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");
  • }

我得到了这个问题,尽管运行命令“chmod 000 foo.html”在docs目录从命令行。我被这个漏洞弄得很困惑,不能找到一个可能的问题源。

 

回答:

stat()lstat()没有尝试读取文件,它们仅仅读取文件信息从相应的路径入口。

你将只得到EACCES错误,如果写作路径中的一个是不可读的对于你的程序。

温馨提示:您的支持与理解,是我们工作最大的动力。如果您是从网上购买的图书,请在对应的网店,给予本书一个好评,我们将衷心感谢!!!
以下是《轻松学C语言》对应的购书评论地址:
当当网http://product.dangdang.com/23246575.html
亚马逊http://www.amazon.cn/dp/B00CIXGTOS
京东网http://item.jd.com/11235318.html

 

  评论这张
 
阅读(14)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017