2016-11-13 7 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()を使用する必要があります。

関連する問題