2013-03-11 5 views
1

c.txtb 디렉토리에 있다고 가정합니다. unlink c.txt은 쉬우 며, 시스템은 b 디렉토리의 항목 {XXX, c.txt}을 제거합니다. 그러나 ba의 서브 디렉토리이고, b의 링크를 해제하고 싶다면, 절차는 동일하거나 더 복잡합니까? 링크 해제에 대한 매뉴얼 페이지에서디렉토리의 링크를 해제하면 어떻게됩니까?

답변

1

: 링크 해제 사용할 때

When the utility is called as unlink, only one argument, 
which must not be a directory, may be supplied. 

그래서, 당신은 매개 변수로 디렉토리를 전달할 수 없습니다.

+0

유닉스 파일 시스템이 디렉토리가 아닌 파일에 대한 링크만을 허용하는 이유에 대해 이야기 할 때,'컴퓨터 시스템 설계의 원리 '는 디렉토리의 링크를 해제하는 예를 보여줍니다. 예제는 적절하지 않습니다. 더 나은 설명? – stonestrong

4

unlink(2)은 파일 만 삭제할 수 있으며 rmdir(2)은 빈 디렉토리 만 삭제할 수 있습니다.

디렉터리를 재귀 적으로 삭제하려면 지능적으로 syscall을 모두 사용해야합니다. 예를 들어 this onenftw이거나 this oneopendir/readdir 인 경우와 같이 여러 가지 다른 재귀 적 삭제 기능을 사용할 수 있습니다.

+0

"a/b/c"가 있다고 가정하고 e가 c의 하드 링크 인 다른 "d/e"가 있다고 가정합니다. 디렉토리 a와 그 서브 컨텐츠를 제거하면 e가 가리키는 곳은 어디입니까? – stonestrong

+0

나는 '컴퓨터 시스템 설계의 원리'라고 불렀다.이 조건에서, 전자는 파괴적이지 않은 매달린 참조로 끝난다. – stonestrong

+2

@stonestrong/기호/링크 인 경우 매달린 참조로 끝나지만/hardlink /는 파일의 사용 횟수가 1이기 때문에 여전히 파일이 있습니다. 다음과 같이 직접해볼 수 있습니다 :'mkdir -p a/b; echo 안녕하세요, 세계 \! > a/b/c; mkdir d; ln -s ../a/b/c d/e; ln a/b/c d/f; rm -rf a; cat d/e; cat d/f' – RolKau

관련 문제