我正在编写一些代码来写一个文件的电子邮件,让你在自己的编辑器中编辑它,当你完成后,你可以告诉我的代码继续。我想让它抓住你仍然打开文件的常见错误,因此可能没有保存它。
我的第一次尝试是尝试获取文件的独占锁(使用File.flock),但从未捕获过。更多谷歌搜索表明this is a hard problem。
最好的建议似乎是查找常见的锁定文件,例如vi foo
将.foo.swp
joe foo
.#foo
{{1}}。
所以问题是,是否有更好的方法来判断文件是否正在被编辑?如果没有,是否有所有常见锁定文件命名约定的列表?
答案 0 :(得分:0)
使用system("#{ENV['EDITOR']} #{path})
调出他们选择的编辑器。程序将在该过程结束时继续,即退出编辑器。
如果你不相信他们退出他们的编辑器,你可以分叉一个进程来观察文件的修改时间,并在修改时间改变时排除程序的其余部分(尽管这可能会多次发生,如果他们逐步保存。)
答案 1 :(得分:0)
lsof获取一个打开文件列表以某种方式,可能通过在/ proc / [pid] /中搜索,以及建议您查找swap / temp文件检查的方法。