[英]Erlang Linux signal handling
是否可以通過Erlang中的處理程序捕獲Linux信號(例如SIGUSR1)? (無需訴諸C中制作的驅動程序)
(不是真正的答案)
2001年有人問:
有沒有人在erlang中有任何unix信號處理的例子。 我想制作一個我寫過的負載均衡器來響應sighup。
那時的答案是:
在Erlang“本身”中沒有處理信號的規定,即你需要使用驅動程序 - 或者當然是端口程序,實際上可能是更好的主意。 同樣對於驅動程序的情況,模擬器有許多信號的處理程序,干擾它可能會產生“有趣”的結果 - 但我相信SIGHUP應該沒問題。
消息來源: http : //www.erlang.org/pipermail/erlang-questions/2001-October/003752.html
據我所知,從那以后沒有任何改變。 但這非常有趣。 如果有人對此有任何消息,請告訴我們:)
自從2017年6月發布的Erlang / OTP 20.0以來,這是可能的。它是通過這個拉取請求完成的, 該請求為名為erl_signal_server
信號添加了一個事件管理器。 請參閱kernel
手冊頁中的“OS信號事件處理程序”部分。
如果您對SIGUSR1感興趣,請注意默認處理程序將使Erlang VM停止並產生崩潰轉儲。 為避免這種情況,僅將自己的處理程序添加到erl_signal_server
; 你必須為它交換默認處理程序:
gen_event:swap_handler(erl_signal_server, {erl_signal_handler, []}, {foo, []}).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.