Erlang 为什么没有;启动“U监视器”;对于gen_服务器?

Erlang 为什么没有;启动“U监视器”;对于gen_服务器?,erlang,monitor,otp,gen-server,Erlang,Monitor,Otp,Gen Server,没有与spawn\u monitor等效的start\u monitor有什么特殊原因吗 因为gen_服务器通常由主管启动,所以不需要这样做吗 我想在我的临时工崩溃时收到通知。在OTP应用程序中,建议采用什么方法执行此操作? 第一个想法是有一个gen_服务器,它将监控由动态主管启动的工人 更多信息: 据我所知,监管者在崩溃时提供受控启动、关闭和受控重启(以恢复到定义良好的状态)。 除此之外,我还希望在工作进程崩溃时运行一个函数 例如,我有一个连接到Erlang节点的C节点。由于C节点无法监视进程

没有与
spawn\u monitor
等效的
start\u monitor
有什么特殊原因吗

因为gen_服务器通常由主管启动,所以不需要这样做吗

我想在我的临时工崩溃时收到通知。在OTP应用程序中,建议采用什么方法执行此操作? 第一个想法是有一个
gen_服务器
,它将监控由动态主管启动的工人

更多信息:

据我所知,监管者在崩溃时提供受控启动、关闭和受控重启(以恢复到定义良好的状态)。 除此之外,我还希望在工作进程崩溃时运行一个函数

例如,我有一个连接到Erlang节点的C节点。由于C节点无法监视进程(AFAIK),并且在与Erlang交互的其他方面也受到限制,因此我有一个用于连接C节点的“代理”进程,以使C节点尽可能简单

C节点使用
ei_rpc_to
对Erlang进行rpc调用,并处理来自连接的Erlang节点的消息。消息是rpc调用的结果或C节点的“带外”数据/信息

Erlang“proxy”进程使用
monitor\u node
监视其C节点,以检测其是否消失,但我还需要一种机制来通知C节点其代理进程崩溃。检测这种情况的一种方法是当它执行下一个rpc调用时,因为它显然会失败,但是因为我已经有了“带外”消息处理,所以我想使用它

另一个用例是让客户端对Erlang集群执行REST请求。这反过来会启动执行某些任务(可能需要很长时间)的工作人员。一段时间后,外部客户端可能希望获取任务的状态。例如,worker可以更新Mnesia表中的状态,但如果它崩溃,谁将用故障状态更新该表

我知道有很多方法可以做到这一点,但我想知道Erlang的方法是什么

第二次编辑:


阅读文档后,我看到在
gen_服务器
terminate
将被调用(如果它是用匹配子句定义的)。这是一个独立监测进程的可行选择吗?这看起来有点混乱,因为当接收到来自其他进程的“退出”时,
terminate
不会被调用,所以我还需要捕获退出

为什么这些子进程同时需要一个监视器和一个监视器?为什么主管不够?也许你可以解释一下你想做什么,以及你希望从监护仪那里得到什么,而监护仪是监护仪无法提供的。@SteveVinoski关于我想要实现的目标的详细信息,请参阅更新的问题