2016-11-13 5 views
3

나는 리눅스에서 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()을 사용해야합니다.