当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Signal模块用法及代码示例

许多操作系统允许将信号发送到正在运行的进程。一些信号对过程有明确的影响,而另一些信号可能会被困在代码级别并采取行动。例如,您的进程可能会捕获 USR1 信号并使用它来切换调试,并且可能使用 TERM 来启动受控关闭。

pid = fork do
  Signal.trap("USR1") do
    $debug = !$debug
    puts "Debug now: #$debug"
  end
  Signal.trap("TERM") do
    puts "Terminating..."
    shutdown()
  end
  # . . . do some work . . .
end

Process.detach(pid)

# Controlling program:
Process.kill("USR1", pid)
# ...
Process.kill("USR1", pid)
# ...
Process.kill("TERM", pid)

产生:

Debug now: true
 Debug now: false
Terminating...

可用信号名称列表及其解释取决于系统。 Signal 交付语义也可能因系统而异;特别是信号传递可能并不总是可靠的。

相关用法


注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Signal模块。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。