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

时间:2016-11-22 11:34:12

标签: c linux

我正在尝试使用最少数量的硬链接获取文件,但我不知道为什么但是出了问题。我在我的代码下面发帖。谢谢所有人。 (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;

}

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

条件cont < s.st_nlink已被倒置,<应为>

(话虽如此,找到&#34;带有最低数量的硬链接的文件的前提对我来说有点奇怪,很可能任何真正的系统都会有多个文件,包含1个链接。)