2016-06-19 69 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) 

所以,在你的榜樣:

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"); 

注意,如果LSTAT犯規返回0,它不會有file_info中的任何有效信息tructure。