當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Ruby Signal模塊用法及代碼示例

本文簡要介紹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模塊。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。