当前位置: 技术问答>linux和unix
unix和c的高手请进
来源: 互联网 发布时间:2014-12-17
本文导语: 我想检验一个文件或目录的类型,总是得不到正确的结果。 例如,想检验一个文件是不是其他文件的链接,用以下代码是否可行? if(stat(filename,&statbuf)==-1){ perror("error"); exit(0);...
我想检验一个文件或目录的类型,总是得不到正确的结果。
例如,想检验一个文件是不是其他文件的链接,用以下代码是否可行?
if(stat(filename,&statbuf)==-1){
perror("error");
exit(0);
}
if((statbuf.st_mode & S_IFMT) == S_IFLNK ){
printf("%s: linkn",filename);
}
以上代码有什么错误吗?为什么总是不对?
请高手指教。
例如,想检验一个文件是不是其他文件的链接,用以下代码是否可行?
if(stat(filename,&statbuf)==-1){
perror("error");
exit(0);
}
if((statbuf.st_mode & S_IFMT) == S_IFLNK ){
printf("%s: linkn",filename);
}
以上代码有什么错误吗?为什么总是不对?
请高手指教。
|
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.
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.
|
stat得到的是你那个连接指向的文件的stat结构,肯定不行了。
用lstat调用,它得到的是文件本身的stat结构。
参阅《linux上的c编程》140页
用lstat调用,它得到的是文件本身的stat结构。
参阅《linux上的c编程》140页
|
if((statbuf.st_mode & S_IFMT) == S_IFLNK )测试方法不对,看看man stat
|
agree.