1

関数 S_ISLNK(file.st_mode) を使用して、特定のファイルがディレクトリまたは通常のファイルに対してシンボリックリンクであるかどうかを確認しようとしています。ただし、シンボリックリンクファイルで確認すると機能しないようです。

これが私のコードです:

            if(S_ISDIR(fileStat.st_mode))
            {
                // DIR - display files in the directory
                printf("    DIR         ");
                fileType = 2;


            }else if(S_ISLNK(fileStat.st_mode)){
                // LNK - display the name of the file the link is pointing to
                printf("    LNK         ");
                fileType = 3;
            }else{
                // Display general info only
                printf("    REG         ");
                fileType = 1;
            }

ディレクトリのチェックは正常に機能していますが、シンボリック リンク ファイルでプログラムを実行すると、通常のファイルとして表示されます。私が間違っている可能性があることを知っている人はいますか?

4

1 に答える 1

4

statリンクのターゲットを統計します。lstatファイルがシンボリック リンクかどうかを確認する場合に使用します。

lstat()stat()path がシンボリック リンクである場合、それが参照するファイルではなく、リンク自体が stat-ed であることを除いて、と同じです。

于 2013-02-19T18:56:51.023 に答える