C 如何获得硬链接数最少的文件?

C 如何获得硬链接数最少的文件?,c,linux,C,Linux,我正在尝试获取具有最低硬链接数的文件,但我不知道为什么,但出现了问题。我在下面发布了我的代码。谢谢大家。 (附言:对不起我的英语) #包括 #包括 #包括 #包括 #包括 #包括 #包括 int main(int argc,char*argv[]){ 结构统计; nlink_t cont=10000; 字符名[1000]; DIR*d; d=opendir(“/home/user/Desktop/”); 结构方向*d2; 而((d2=readdir(d))!=NULL){ lstat(d2->d

我正在尝试获取具有最低硬链接数的文件,但我不知道为什么,但出现了问题。我在下面发布了我的代码。谢谢大家。 (附言:对不起我的英语)

#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main(int argc,char*argv[]){
结构统计;
nlink_t cont=10000;
字符名[1000];
DIR*d;
d=opendir(“/home/user/Desktop/”);
结构方向*d2;
而((d2=readdir(d))!=NULL){
lstat(d2->d_name,&s);
if(S_ISREG(S.st_模式)){
如果(续){
cont=s.st_nlink;
strcpy(名称,d2->d_名称);
}
}
}
printf(“\n文件:%s\n”,名称);
返回0;
}

d2->d_name
只是目录名,但
lstat
需要相对或绝对路径。因此,除非您当前的工作目录是/home/user/Desktop/,
lstat
将失败。您需要构造路径,并且应该始终检查函数调用(如
lstat
)的返回代码

d2->d_name
只是目录名,但
lstat
需要相对或绝对路径。因此,除非您当前的工作目录是/home/user/Desktop/,
lstat
将失败。您需要构造路径,并且应该始终检查函数调用(如
lstat
)的返回代码

条件
cont
是反向的,


(也就是说,找到具有最少硬链接数的“文件”的前提对我来说有点奇怪,很可能任何实际系统都会有多个具有1个链接的文件。)

条件
cont
是相反的,
应该是code>


(也就是说,找到具有最少硬链接数的文件的前提对我来说有点奇怪,任何实际系统都很可能有多个具有1个链接的文件。)

条件
cont
似乎颠倒了。谢谢,现在我的代码运行了。错误很小。我没有注意到。条件
cont
似乎颠倒了。谢谢,现在我的代码运行了。错误很小。我没有注意到。
#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;

}