답변:
둘 다 unlink()
시스템 호출 인 동일한 기본 기능에 대한 랩퍼 입니다.
Userland 유틸리티 간의 차이점을 측정합니다.
rm(1)
:
unlink(1)
:
rm(1)
여러 개의 인수 를 제공 하는 것과 비교할 때 속도가 느 립니다.다음과 같은 차이점을 보여줄 수 있습니다.
$ touch $(seq 1 100)
$ unlink $(seq 1 100)
unlink: extra operand `2'
$ touch $(seq 1 100)
$ time rm $(seq 1 100)
real 0m0.048s
user 0m0.004s
sys 0m0.008s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do rm $i; done
real 0m0.207s
user 0m0.044s
sys 0m0.112s
$ touch $(seq 1 100)
$ time for i in $(seq 1 100); do unlink $i; done
real 0m0.167s
user 0m0.048s
sys 0m0.120s
그러나 우리가 시스템 unlink(2)
기능 에 대한 불충분 한 호출에 대해 이야기하고 있다면 , 지금은 아마도 당신이 설명하고 있지 않을 것입니다.
unlink()
디렉토리와 파일 모두 에서 시스템 을 수행 할 수 있습니다 . 그러나 디렉토리가 다른 디렉토리 및 파일의 부모 인 경우 해당 부모에 대한 링크는 제거되지만 자식은 매달려 있습니다. 어느 것이 이상적이지 않습니다.
편집하다:
님 unlink(1)
과 의 차이점을 명확히했습니다 unlink(2)
. 시맨틱은 여전히 플랫폼마다 다릅니다.
mkdir -p 1/2/3; touch 1/one 1/2/two 1/2/3/three; rm -ri 1
.. 부모 디렉토리를 연결 해제하면 fsck가 불일치를 발견 할 때까지 하위 디렉토리에서 소비 한 공간이 손실됩니다.