기본적으로 클래스에 대한 UNIX ls 명령의 복제본을 작성해야하며 거의 모든 것이 작동합니다. 한 가지 방법은 파일이 심볼릭 링크인지 아닌지 확인하는 것입니다. stat()
에 대한 man 페이지에서 S_IFLNK
으로 정의 된 값이 있음을 알았습니다.파일이 기호 링크인지 여부를 stat()를 사용하여 어떻게 결정합니까?
switch(stbuf.st_mode & S_IFMT){
case S_IFLNK:
printf("this is a link\n");
break;
case S_IFREG:
printf("this is not a link\n");
break;
}
내 코드 :
이 나는 파일이 심볼릭 링크가 행운과 함께 여부를 확인하기 위해 노력하고있어 방법이다 (참고, stbuf는 stat()
가에 아이 노드 데이터를 반환하는 버퍼이다) 그게 사실이라해도 항상 this is not a link
을 인쇄하고 실제 ls 명령이 그렇게 말했기 때문에 그 파일이 심볼릭 링크라는 것을 알고 있습니다. 게다가 sym-link를 만들었습니다 ...
누구든지 내가 무엇을 발견 할 수 있습니까? 잘못하고있는거야? 도와 주셔서 감사합니다!
내 stat (2) 맨 페이지에서 인용 : lstat()는 stat()와 동일하지만 경로가 심볼 링크 인 경우 링크 자체는 stat 파일이며 stat 파일은 참조되지 않습니다. – Philip