2012-03-08 80 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

相关问题