gpt4 book ai didi

ruby - ruby 退出时停止 FSSM 进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:59:48 25 4
gpt4 key购买 nike

我正在编写一段代码,用于监视目录并在该目录中创建新文件时执行某些任务。我正在使用 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 个进程仍在运行。那么,如何在脚本退出时进行清理呢?

最佳答案

在父进程中安装一个信号处理程序,当它即将被信号(SIGINT、SIGTERM、SIGQUIT、SIGHUP)杀死时触发,然后依次向子进程(FSSM 监视器)发送适当的信号。

关于ruby - ruby 退出时停止 FSSM 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21419764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com