2014-02-13 31 views
0

隨着C代碼,我想知道給定的文件(如test.c)是否是一個符號鏈接。我試着用stat()函數。 我在查看如何找到給定的文件是一個符號(軟)鏈接或硬鏈接

nlink_t st_nlink; /* number of hard links */ 

stat結構的成員。

struct stat stbuf; 
stat("test.c", &stbuf) 

stbuf.st_nlink是給一個在硬鏈接的情況下,以及在軟鏈接。

是我做對了。或者是否有任何其他方式來檢查給定的文件是軟鏈接還是硬鏈接。

+1

請參閱此處的答案:http://stackoverflow.com/questions/2635923/how-do-you-determine-using-stat-whether-a-file-is-a-symbolic-link – Brandin

回答

4

不,您需要使用lstat()才能檢測文件是否爲軟鏈接。

另外請確保您明白,通常情況下,不存在三種不同類型的文件:文件,文件的硬鏈接和文件的軟鏈接。相反,只有兩個:硬鏈接到文件和軟鏈接。您可能認爲「文件」實際上也是一個硬鏈接,它通常只是單一鏈接。

+0

我正在使用此代碼 struct stat stbuf; (「softlink_uname.c」,&stbuf)) if(S_IFLNK == stbuf.st_mode&S_IFMT) printf(「this is a soft link \ n」); else if(S_IFREG == stbuf.st_mode&S_IFMT) printf(「this is an link \ n」); 但是沒有印刷,我是否做錯了什麼? –

+0

@Abhiteshkhatri是的,你使用了錯誤的函數,就像我說你必須使用'lstat()',** not **'stat()',檢測軟鏈接。 – unwind

+0

謝謝,對不起,它輸入錯誤,現在我使用lstat,但沒有任何打印。 –

相關問題