如何知道图像文件是否打开

How to know if an image file is open

你好,我想制作一个小的 ruby 脚本,当我的图片打开时提醒我。

我试试 :

filename = "photo.jpg"

loop do
    sleep(1)
    if system %Q[lsof #{filename}]
        puts "File open"
    end
end

但它不起作用..有什么想法吗?

试试这个例子:

  1. 创建文件touch hello_world.log
  2. 使用 -f 尾随文件(允许您实时跟踪文件的增长)tail -f hello_world.log
  3. 打开一个单独的终端并打开 irb

输入以下代码:

filename = "hello_world.log"

loop do
    sleep(1)
    if system %Q[lsof #{filename}]
        puts "File open"
    end
end

您可能希望查看 inotify (Ruby gem rb-inotify),因为这可能正是您想要的。假设有人使用文本编辑器打开文件然后保存它的场景,保存事件可能不会显示在 lsof 下,因为它每秒轮询一次(并且随后只会显示当时存在的信息,所以你可能永远也抓不到它)。