如何检查其他应用程序是否正在使用某个文件?

And*_*res 3 ruby linux

我需要处理一个视频文件,我需要在打开它之前完成该文件.所以我需要在处理之前检查文件是否打开,但是由另一个进程打开.知道怎么检查这个吗?我正在使用Linux.

Fai*_*aiz 6

没有任何额外的宝石,有点浪费的方式可能是:

if %x[lsof -F n].split("\n").grep(/yourfilename/).empty?
  # all clear
else 

end
Run Code Online (Sandbox Code Playgroud)

要么

if system %Q[lsof #{filename}] 
  # still open..
else 
  # all clear
end
Run Code Online (Sandbox Code Playgroud)

或者,忽略我的黑客建议并使用宝石:https://github.com/jordansissel/fosl