2012-03-08 64 views
2

我在Mac上有一個客戶端 - 服務器應用程序。客戶端上傳文件並且服務器下載文件。 Sever從客戶端讀取特定大小的字節並寫入文件。但在中間用戶可以使用Finder上下文菜單或從終端刪除文件。我想停止任何其他應用程序對此文件的任何寫入/執行操作,直到下載運行。在Windows上創建文件時,可以使用FILE_SHARE_READ輕鬆完成。但是我們如何才能在Mac上實現相同的功能?如何在Mac上下載期間停止刪除文件

我試過在Mac上的諮詢鎖,但沒有運氣。如果進程A在文件上使用顧問鎖,那麼進程B不能訪問它,但我總是可以使用Finder上下文菜單刪除文件。

回答

0

您確定需要這樣做嗎?只要你有一個打開的文件句柄,文件是否被刪除並不重要,你仍然可以讀取它直到你關閉文件句柄。如果用戶在文件傳輸中刪除文件,它不會阻止您發送完整文件。

+0

這是一個多線程程序。當數據可用並寫入文件然後關閉文件句柄時,它會以追加模式打開文件。用戶可以一次上傳多個文件。 – Prince 2012-03-08 15:11:42

+0

當用戶選擇上傳文件時,您打開文件,不是嗎?無論用戶是否刪除它,您都可以從該文件讀取,直到關閉它爲止。 – Jim 2012-03-08 15:13:10

+0

是的,我們可以讀取文件,沒問題。讓我來澄清一下這個案子。我使用Macfuse掛載文件系統,用戶將文件上傳到此文件系統。當上傳完成後,用戶應該看到文件系統中的文件,但是如果用戶在上傳過程中刪除了該文件,那麼當下載完成時,我的應用程序無法將其顯示到文件系統,因爲它已經進入垃圾箱。 – Prince 2012-03-08 15:24:37