0

我正在编写一些代码来将电子邮件写入文件,让您在自己的编辑器中对其进行编辑,完成后您可以告诉我的代码继续执行。我想让它捕获您仍然打开文件的常见错误,因此可能没有保存它。

我的第一次尝试是尝试获得文件的排他锁(使用File.flock),但从未抓住它。更多的谷歌搜索表明这是一个难题

最好的建议似乎是寻找常见的锁定文件,例如vi foowill make .foo.swpwhile joe foowill make .#foo

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

4

2 回答 2

0

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

如果您不信任他们退出编辑器,您可以分叉一个进程来观察文件的修改时间,并在修改时间更改时将程序的其余部分排队(尽管如果他们增量保存,这可能会发生多次) .

于 2011-02-16T00:23:12.500 回答
0

lsof以某种方式获取打开文件的列表,可能通过在 /proc/[pid]/ 中搜索,以及您建议的用于查找交换/临时文件的方法。

于 2011-02-16T00:32:11.870 回答