3

在 Windows 等上,我曾经使用一种技巧来找出当前正在使用的文件(专门编写的)。

我用来打开文件进行写入,如果它失败了,很可能另一个进程正忙于访问它。

遗憾的是,这些技巧(使用带有排他锁的 C OPEN 进行写入)在我的 Mac 上不起作用。虽然我在终端中的 curl 仍在编写我的 -fileBusy() 检查失败。

使用 F_GETLK 对 fd 调用 fcnt 也不会显示任何锁定。

我是否有机会检测文件是否正在被另一个进程使用?

Ps> 无法侦听 fsevents,因为我的应用程序是在其他应用程序/进程创建之后启动的。

4

2 回答 2

5

Apple 通过电子邮件确认,以下链接中描述的解决方案是有效的,不被视为私有 API。

更多信息: http: //lists.apple.com/archives/cocoa-dev/2010/May/msg01455.html

于 2012-11-06T14:53:15.660 回答
1

您可以尝试使用 NSTask 运行以下 shell 命令:

lsof -Fc path/to/thefile

这将为您提供打开文件的任何进程的进程 ID 和名称。

于 2011-12-27T17:31:45.590 回答