2016-11-22 41 views
0

我試圖讓硬鏈接的數量最低的文件,但我不知道爲什麼,但出了問題。我發佈在我的代碼下面。謝謝大家。 (詩篇。對不起,我的英語)如何獲得硬鏈接數最少的文件?

#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

「cont Arkku

+0

謝謝,現在我的代碼運行了。錯誤是微不足道的,我沒有注意到。 – Joe

回答

2

d2->d_name是目錄的只是名字,但lstat需要一個路徑,相對或絕對的。所以除非你目前的工作目錄是/ home/user/Desktop /,否則lstat會失敗。您需要構建路徑,並且應該始終檢查函數調用的返回碼,如lstat

0

條件cont < s.st_nlink被倒置,<應該是>

(話雖這麼說,找到與「中的」文件的前提最低號硬鏈接的是一個有點奇怪對我來說,這很可能是任何真正的系統必須具有1個鏈接多個文件。)

+0

這只是爲了學習這一點。我正在學習操作系統考試。 – Joe