unix和c的高手请进

kyotowolf 2002-09-09 12:47:47
我想检验一个文件或目录的类型,总是得不到正确的结果。
例如,想检验一个文件是不是其他文件的链接,用以下代码是否可行?
if(stat(filename,&statbuf)==-1){
perror("error");
exit(0);
}
if((statbuf.st_mode & S_IFMT) == S_IFLNK ){
printf("%s: link\n",filename);
}
以上代码有什么错误吗?为什么总是不对?
请高手指教。
...全文
66 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kyotowolf 2002-09-13
  • 打赏
  • 举报
回复
谢谢各位,给分
yixudong 2002-09-09
  • 打赏
  • 举报
回复
stat得到的是你那个连接指向的文件的stat结构,肯定不行了。

用lstat调用,它得到的是文件本身的stat结构。

参阅《linux上的c编程》140页
胖和尚minifat 2002-09-09
  • 打赏
  • 举报
回复
use lstat:
lstat is identical to stat, except in the case of a sym瓓bolic link, where the link itself is stat-ed, not the file that it refers to.

mongtze 2002-09-09
  • 打赏
  • 举报
回复
agree.
blh 2002-09-09
  • 打赏
  • 举报
回复
if((statbuf.st_mode & S_IFMT) == S_IFLNK )测试方法不对,看看man stat

19,615

社区成员

发帖
与我相关
我的任务
社区描述
系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区管理员
  • 系统维护与使用区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧