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 に答える