我正在尝试使用最少数量的硬链接获取文件,但我不知道为什么但是出了问题。我在我的代码下面发帖。谢谢所有人。 (Ps.抱歉我的英语)
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<dirent.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<string.h>
int main(int argc,char* argv[]){
struct stat s;
nlink_t cont=10000;
char name[1000];
DIR* d;
d=opendir("/home/user/Desktop/");
struct dirent* d2;
while((d2=readdir(d))!=NULL){
lstat(d2->d_name,&s);
if(S_ISREG(s.st_mode)){
if(cont < s.st_nlink){
cont=s.st_nlink;
strcpy(name,d2->d_name);
}
}
}
printf("\nFile:%s\n",name);
return 0;
}
答案 0 :(得分:2)
d2->d_name
只是目录的名称,但lstat
需要路径,相对路径或绝对路径。因此,除非您当前工作的目录是/ home / user / Desktop /,否则lstat
将失败。您需要构造路径,并且应始终检查函数调用的返回代码,如lstat
。
答案 1 :(得分:0)
条件cont < s.st_nlink
已被倒置,<
应为>
。
(话虽如此,找到&#34;带有最低数量的硬链接的文件的前提对我来说有点奇怪,很可能任何真正的系统都会有多个文件,包含1个链接。)