【问题标题】:Erlang process monitoring itselfErlang 进程监控本身
【发布时间】:2012-01-17 20:38:10
【问题描述】:

我正在尝试在 Erlang 中创建一个可以监控自身并重新启动它的进程退出。到目前为止,我一点运气都没有,所以没有任何代码可以显示。这在 Erlang 中是否可行,如果可以,如何实现?

编辑:J Fritsch 发布了一个指向 sample 的链接,该链接监控自身但仅一次。如果退出(医生,医生)。用了两次,第二次就不行了。关于如何解决这个问题的任何想法?

【问题讨论】:

  • 你不能在J Fritschsample中使用两次exit(Doctor, doctor),因为Doctor不包含正在运行的医生进程的PID,但是有一个新的。
  • 我有办法解决这个问题吗?
  • 干脆别这样。如果有人用exit(Pid, kill) 杀死了你的进程,你不能掩盖这一点。主管是如何处理重启的方法,所以使用它。 J Fritsch 的样本在许多其他方面存在缺陷。
  • 我也在读《七周内的七种语言》:)

标签: process erlang monitor self


【解决方案1】:

如果进行监控的过程是导致死亡的过程,那么您总是会陷入困境。

使用主管。

【讨论】:

  • 在进程的主函数周围包裹一个try-catch,并让函数从catch内部递归调用自身。您还必须设置 trap_exit。我不确定,但您的进程也可能会以无法捕获的方式死亡。
  • 或者,让进程启动自己的监控/重启进程。
  • 这是哪本书?一旦一个进程死了,那么它真的真的死了并且消失了,所以它不能做任何事情。您需要另一个进程来监控它。这是拥有主管和工人的基础。
  • 这本书是《七周的七门语言》。
猜你喜欢
  • 2017-10-30
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2014-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
相关资源
最近更新 更多