是否可以通过Erlang中的处理程序捕获Linux信号(例如SIGUSR1)?(不必求助于用C语言编写的驱动程序)
发布于 2017-01-26 19:32:10
自2017年6月发布Erlang/OTP 20.0以来,这是可能的。这是通过this pull request完成的,它为信号添加了一个名为erl_signal_server
的事件管理器。请参阅the kernel
manual page中的“操作系统信号事件处理程序”部分。
如果您对SIGUSR1感兴趣,请注意默认处理程序将使Erlang VM停止并产生崩溃转储。为了避免这种情况,仅将您自己的处理程序添加到erl_signal_server
中是不够的;您必须用默认处理程序来替换它:
gen_event:swap_handler(erl_signal_server, {erl_signal_handler, []}, {foo, []}).
https://stackoverflow.com/questions/2459672
复制相似问题