簡體   English   中英

Erlang Linux信號處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM