作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
从中获取的代码可以正常编译。它打印目录中的文件名,前面有一个字母选项:d
、f
、l
或 o
取决于他们的文件类型(o
为其他)。但是,我在目录 /etc/network
上测试了它,该目录有一个名为 run
的符号文件,它显示为 d
?我也尝试过重新安排 if-statements
的顺序,但这也给出了不令人满意的输出。我使用不当吗?
while ((ent = readdir (dp)) != NULL) {
lstat(ent->d_name, &st);
if (col){
if(S_ISDIR(st.st_mode)){
printf("d\t");
}
else if (S_ISREG(st.st_mode)){
printf("f\t");
}
else if (S_ISLNK(st.st_mode)){
printf("l\t");
}
else {
printf("o\t");
}
}
最佳答案
这一行:lstat(ent->d_name, &st);
,dp->d_name
只包含文件名,需要传全文件路径到 lstat()
,如下所示:
char full_path[512] = "DIR_PATH"; //make sure there is enough space to hold the path.
strcat(full_path, ent->d_name);
int col = lstat(full_path, &st);
顺便说一句,S_ISDIR
、S_ISLNK
等是 POSIX 宏,不是函数。
关于C: <sys/stat.h> 函数 S_ISLNK、S_ISDIR 和 S_ISREG 表现异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22394584/
从中获取的代码可以正常编译。它打印目录中的文件名,前面有一个字母选项:d、f、l 或 o 取决于他们的文件类型(o 为其他)。但是,我在目录 /etc/network 上测试了它,该目录有一个名为 r
我是一名优秀的程序员,十分优秀!