2016-06-19 3 views
0

파일이 기호 링크인지 확인하려고하는데 내 테스트가 작동하지 않는 것 같습니다. 심볼릭 링크를 확인하려면 어떻게해야합니까? S_ISLNK가 정의되어있는 경우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(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에있는 유효한 정보 구조.

관련 문제