2012-03-08 2 views
2

Mac에 클라이언트 서버 응용 프로그램이 있습니다. 클라이언트가 파일을 업로드하고 서버가 파일을 다운로드합니다. Sever는 클라이언트에서 특정 크기의 바이트를 읽고 파일에 기록합니다. 그러나 중간 사용자는 Finder 컨텍스트 메뉴 또는 터미널을 사용하여 파일을 삭제할 수 있습니다. 다운로드가 실행될 때까지 다른 응용 프로그램에서이 파일에 대한 쓰기/실행 작업을 중단하고 싶습니다. Windows에서 파일을 만드는 동안 FILE_SHARE_READ를 사용하여 쉽게 수행 할 수 있습니다. 하지만 Mac에서 어떻게 동일한 기능을 구현할 수 있습니까?Mac에서 다운로드하는 동안 파일 삭제를 중지하는 방법

Mac에서는 자문 잠금을 시도했지만 운이 없습니다. 프로세스 A가 파일에 자문 잠금을 사용하면 프로세스 B는 프로세스에 액세스 할 수 없지만 Finder 컨텍스트 메뉴를 사용하여 파일을 항상 삭제할 수 있습니다.

답변

0

정말해야합니까? 열려있는 파일 핸들을 가지고있는 한, 파일이 삭제되면 상관 없습니다. 파일 핸들을 닫을 때까지 파일을 읽을 수 있습니다. 사용자가 중간 전송 파일을 삭제하면 전체 파일 전송을 중단하지 않습니다.

+0

멀티 스레드 프로그램입니다. 데이터를 사용할 수있게되면 추가 모드에서 파일을 열고 파일에 쓰고 파일 핸들을 닫습니다. 사용자는 한 번에 여러 파일을 업로드 할 수 있습니다. – Prince

+0

사용자가 파일을 업로드하도록 선택하면 파일을 열지 않습니까? 사용자가 파일을 삭제했는지 여부에 관계없이 파일을 닫을 때까지 해당 파일을 읽을 수 있습니다. – Jim

+0

예, 파일을 읽을 수 있지만 문제는 없습니다. 이 사건을 취소하겠습니다. Macfuse를 사용하여 파일 시스템을 마운트하고 사용자가이 파일 시스템에 파일을 업로드합니다. 업로드가 끝나면 사용자는 파일 시스템의 파일을 볼 수 있지만 업로드 중간에 파일을 삭제하면 다운로드가 끝나면 이미 파일 시스템에 파일 시스템이 표시되지 않으므로 휴지통으로 들어갈 수 없습니다. – Prince

관련 문제