(理论上)可能是spawn_monitor()
'ed进程退出(正常退出或出错)而不向父进程发送'DOWN'
消息吗?我有一个非常奇怪的进程泄漏,似乎有些进程不发送'DOWN'
消息。我正在使用Ubuntu 9.10附带的Erlang包。也许这是一个已知的错误?
答案 0 :(得分:1)
您需要显示一些代码。监控是erlang工作方式的核心。
很难说出你的实际问题是什么,因为你没有描述你所看到的,所以我不得不猜测。
您要么没有尝试接收关闭消息,要么该进程没有退出。
如果你有进程泄漏,听起来他们实际上并没有退出。
您可能正在尝试构建自己的supervisor
模块。如果你想要理智的进程树关闭和/或重启,我强烈建议使用OTP的主管。
答案 1 :(得分:0)
也许你在某个时候被监视这个过程?
从erlang的文档中读取:demonitor / 1:
一旦erlang:demonitor(MonitorRef)已经返回它,保证不行 {'DOWN',MonitorRef,_,_,_}消息 由于显示器将被放入 中的调用者消息队列 未来。 A {'DOWN',MonitorRef,_,_, _}消息可能已放在调用者消息队列之前 但是打电话。因此,大多数情况下 情况,建议删除这样的 消息中的“DOWN”消息 监控后的队列 停止。二郎神:demonitor(MonitorRef, [flush])可以用来代替 erlang:demonitor(MonitorRef)如果这样的话 需要清理。