如何检查文件是否正在编辑? (红宝石)

时间:2011-02-16 00:12:58

标签: ruby file editor editing lockfile

我正在编写一些代码来写一个文件的电子邮件,让你在自己的编辑器中编辑它,当你完成后,你可以告诉我的代码继续。我想让它抓住你仍然打开文件的常见错误,因此可能没有保存它。

我的第一次尝试是尝试获取文件的独占锁(使用File.flock),但从未捕获过。更多谷歌搜索表明this is a hard problem

最好的建议似乎是查找常见的锁定文件,例如vi foo.foo.swp joe foo .#foo {{1}}。

所以问题是,是否有更好的方法来判断文件是否正在被编辑?如果没有,是否有所有常见锁定文件命名约定的列表?

2 个答案:

答案 0 :(得分:0)

使用system("#{ENV['EDITOR']} #{path})调出他们选择的编辑器。程序将在该过程结束时继续,即退出编辑器。

如果你不相信他们退出他们的编辑器,你可以分叉一个进程来观察文件的修改时间,并在修改时间改变时排除程序的其余部分(尽管这可能会多次发生,如果他们逐步保存。)

答案 1 :(得分:0)

lsof获取一个打开文件列表以某种方式,可能通过在/ proc / [pid] /中搜索,以及建议您查找swap / temp文件检查的方法。