2016-11-13 21 views
3

我正在處理在linux中使用C posix的符號鏈接。如何區分常規文件和符號鏈接?

我檢測到一個文件,我必須區分常規文件和符號鏈接。

現在我做了下:

if(S_ISREG(direct_info.st_mode)) { 
    // deal with regular file 
} 
else if(S_ISLNK(direct_info.st_mode)) { 
    // deal with symbolic link 
} 

的問題是,當該文件是一個符號鏈接的執行流程,在第一,如果進入。也就是說,什麼時候符號鏈接也會在S_ISREG條件下輸入。那麼,我能做些什麼來區分兩者呢?

+6

檢查它是否是第一個鏈接。 – dbush

+0

你是如何獲得'direct_info'的? – duskwuff

回答

2

您可能正在使用stat()來獲取文件模式。 stat()實際上返回有關目標的信息,而不是鏈接本身。 因此,爲了獲取有關鏈接本身的信息,您需要使用lstat()

相關問題