2016-06-19 3 views
0

ファイルがシンボリックリンクであるかどうかを確認しようとしていますが、テストが機能していないようです。シンボリックリンクを確認するにはどうすればよいですか?lstatがシンボリックリンクを検出しない

if (lstat(file->full_path, &file_info) == 0) 
    printf((file_info.st_mode & S_IFDIR) ? "l" : ""); 
else 
    printf((S_ISDIR(file_info.st_mode)) ? "d" : "-"); 

答えて

1

S_ISLNKが定義されている場合:

S_ISLNK(file_info.st_mode) 

そうでない場合

あなたの例ではそう
if ((file_info.st_mode & S_IFMT) == S_IFLNK) 

:LSTAT doesntのリターン0ならば、それは持って文句を言わないこと

if (lstat(file->full_path, &file_info) == 0) 
    printf(((file_info.st_mode & S_IFMT) == S_IFLNK) ? "l" : ""); 
else 
    printf("Could not get file stat info\n"); 

注意file_infoの任意の有効な情報構造。

関連する問題