2011-01-13 6 views
2
에 때때로 (그 테크 노트에서 복사 답) FSDeleteObject에서 fBsyErr을 가져올 때, 적절한 해결 방법은 10.5에 FSUnlinkObject를 호출하는 것입니다, 나타냅니다

Technical Q&A 1497this question 실패합니다. 두 개의 API를 FSDeleteObject 사이의 기술적 차이가파일 삭제는 맥

무엇 FSUnlinkObject (FSUnlinkObject이 문서에 표시되지 않음을 지적 제외)? unlink이 기본 API가 아닌 대체 시스템이어야하는 이유는 무엇입니까?

+0

"API 함수"** API는 하나의 함수가 아니라 여러 함수 집합입니다.) 저는 전문 용어 인 나치입니다./ontopic - 재미있는 질문. 내 생각에 그것을 삭제하면 영구적으로 삭제되지만, unlink는 단순히 목록에서 제거되므로 (말하자면), 파일은 여전히 ​​존재합니다. 그러나 나는 틀릴 수도 있습니다. – Qix

답변

0

FSDeleteObject은 Mac OS가 유닉스와 합병되기 오래 전에 존재했던 파일 삭제 기능을 계속해서 지니고 있었기 때문에 나는 유추했다. 파일의 링크를 해제하는 것은 유닉스 개념이다.

+0

이것이 Delete를 기본 전화로 사용해야하는 이유를 제시합니까? 그렇다면, 나는 그것을 놓치고 있습니다. – Richard

0

당신이 링크 한 Apple 문서가 그 차이를 아주 분명하게 설명합니다. FSUnlinkObject는 unlink()와 동일한 의미를 지님 - 열려있는 파일 삭제가 허용됩니다. FSDeleteObject는 열려있는 파일을 삭제할 수 없으며이를 시도 할 때 오류 코드를 반환합니다.

+0

예, 그렇지만 아무 것도 설명하지 않습니다. 바쁘면 기본 메시지를 삭제하고 대체 연결을 해제해야하는 이유는 무엇입니까? 항상 링크 해제를 사용하지 않는 이유는 무엇입니까? – Richard

+1

@ 리차드 : 누가 삭제가 기본이라고 말합니까? 위에 링크 된 Q & A는 "이 API 호출은 10.5 이상의 파일을 삭제할 때 오류를 피하기위한 기본 솔루션입니다."라고 말합니다. 그러나 이는 링크 해제를 사용하지 않는 한 가지 이유를 제시합니다. OS 10.4와 호환되는 코드를 작성하려고 시도했을 수 있습니다. 그것은 Q & A가 쓰여졌을 때보다 더 큰 이슈 였을 것입니다. – JWWalker