我正在研究一段代码,它监视目录并在该目录中创建新文件时执行某些任务。我正在使用 FSSM,我的(简化)代码如下所示:
require 'fssm'
class FileWatcher
def initialize
FSSM.monitor('./temp/', '**/*', :directories => true) do
create do |base, relative|
puts "Create called with #{relative}"
end
end
end
end
FileWatcher.new
文件监控方面运行良好,但我的问题是当我停止这个脚本时。发生的是“file_monitor”进程仍在运行。例如,这是在运行和停止脚本 3 次之后:
$ ps aux | grep file_watcher
root 3272 1.0 5.3 9760 6596 pts/0 Tl 00:11 0:02 ruby file_watcher.rb
root 3302 1.5 5.2 9760 6564 pts/0 Tl 00:14 0:02 ruby file_watcher.rb
root 3314 2.2 5.2 9764 6564 pts/0 Sl+ 00:14 0:02 ruby file_watcher.rb
即有 3 个进程仍在运行。那么,如何在脚本退出时进行清理呢?