Erlang 牛仔处理器和自定义gen_服务器链接

Erlang 牛仔处理器和自定义gen_服务器链接,erlang,cowboy,Erlang,Cowboy,我正在尝试实现REST处理程序,它与客户机进行通信 gen_服务器 从主管处获取gen_服务器并链接到当前处理程序流程: rest_init(Req, _Opts) -> ... process_flag(trap_exit, true), {ok, Pid} = pbshare_logic_sup:start_registration(), link(Pid), ... make_get(Req, State) -> .... make error here !!!

我正在尝试实现REST处理程序,它与客户机进行通信 gen_服务器

从主管处获取gen_服务器并链接到当前处理程序流程:

rest_init(Req, _Opts) ->
...
  process_flag(trap_exit, true),
  {ok, Pid} = pbshare_logic_sup:start_registration(),
  link(Pid),
...

make_get(Req, State) ->
....
make error here !!!
....
和gen_服务器代码: 启动链接()-> gen_服务器:启动链接(?模块,[],[])

因此,我希望在以下情况下从REST处理程序接收到gen_服务器的退出信号: 错误发生在牛仔身上。
但我没有收到。我做错什么了吗?

必须链接您的进程才能接收退出信号。我不清楚在您的代码示例中,进程在哪里相互链接。Handler调用supervisor方法{ok,Pid}=pbshare\U logic\u sup:start\u registration(),supervisor是简单的一对一,它只启动一个子进程:supervisor:start\u child(?MODULE,[])。这很奇怪。能否显示pbshare_logic_sup:start_registration()的源代码?还有一个问题。您是否尝试从gen_服务器进程的init()调用链接?Sup:start_link()->主管:start_link({local,?MODULE},?MODULE,[])。%%===========================================================================================================================================================================================================================================================================================================================主管回调%%=================================================================================================================================init([])->{好的,{简单的{一个一个,0,1},[{pbshare逻辑}注册,{pbshare逻辑}注册,启动{链接,[},临时,1000,工作人员,{pbshare U逻辑}}}。start_registration()->supervisor:start_child(?模块,[])。我在牛仔处理程序中创建链接,因为gen_服务器对牛仔一无所知。rest_init(请求,选择)->。。。进程标志(trap\u exit,true),{ok,Pid}=pbshare\u logic\u sup:start\u registration(),link(Pid),
init(Args) ->
  process_flag(trap_exit, true),
  {ok, []}.

handle_info({'EXIT', FromPid, Reason}, State) ->
  lager:info("Exit Logic from ~p  Reason: ~p~n", [FromPid, Reason]),
  {noreply, State};