2014-02-13 2 views
0

c 코드를 사용하여 주어진 파일 (예 : test.c)이 기호 링크인지 여부를 알고 싶습니다. 나는 stat() 함수로 시도했다. 나는 합계 구조의주어진 파일을 찾는 방법은 기호 (소프트) 링크 또는 하드 링크

nlink_t st_nlink; /* number of hard links */ 

구성원을 확인하고 있습니다.

struct stat stbuf; 
stat("test.c", &stbuf) 

stbuf.st_nlink은 소프트 링크의 경우뿐만 아니라 하드 링크의 경우 하나를 제공합니다.

내가 제대로하고 있는지. 또는 주어진 파일을 확인하는 다른 방법은 소프트 링크 또는 하드 링크입니다.

+1

답변을 보려면 여기를 클릭하십시오 : http://stackoverflow.com/questions/2635923/how-do-you-determine-using-stat-whether-a-file-is-a-symbolic-link – Brandin

답변

4

아니요, 파일이 소프트 링크인지 여부를 감지하려면 lstat()을 사용해야합니다.

또한 일반적으로 세 가지 유형의 파일 (파일, 하드 링크 및 파일에 대한 소프트 링크)이 없음을 알고 있어야합니다. 대신 파일과 하드 링크에 대한 하드 링크 만 있습니다. "파일"로 생각할 수도있는 사실은 실제로 하드 링크입니다. 일반적으로 단일 링크 일뿐입니다.

+0

이 코드 구조체 통계 stbuf; (S_IFLNK == stbuf.st_mode & S_IFMT) printf ("이것은 부드러운 링크입니다. else if (S_IFREG == stbuf.st_mode & S_IFMT) printf ("이것은 링크가 아닙니다 \ n"); 하지만 아무것도 인쇄되지 않습니다. 내가 잘못 했나요? –

+0

@Abhiteshkhatri 예, 틀린 함수를 사용하고 있습니다.'lstat()', ** not **'stat()'를 사용해야한다고 말한 것처럼, 소프트 링크를 감지합니다. – unwind

+0

감사합니다. 미안하지만 실수로 타이핑하고 있습니다. 이제는 lstat를 사용하고 있지만 아무것도 인쇄하지 않습니다. –

관련 문제