当 mnesia 从程序内停止时,Erlang 应用程序的停止会挂起
我遇到了一个问题,我无法在程序中停止记忆而不导致应用程序挂起。
我目前正在我的 erlang 应用程序中进行 mnesia 原型设计。
在我的 jaus_app.erl 文件中,start() 调用:
{atomic, ok} = mnesia:load_textfile("priv/mnesia_prototype.txt")
我的 stop() 函数调用:
mnesia:dump_to_textfile("priv/mnesia_prototype_res.txt"),
mnesia:stop(),
当我注释掉这些行并从 erlang 提示符启动和停止 mnesia 时,我能够干净地停止我的应用程序。
我不应该在成熟的 erlang 应用程序中使用这些原型函数吗?
肯.
I've run into a problem where I cannot stop mnesia within my program without causing the app to hang.
I'm presently doing prototyping of mnesia within my erlang app.
In my jaus_app.erl file the start() calls:
{atomic, ok} = mnesia:load_textfile("priv/mnesia_prototype.txt")
My stop() function calls:
mnesia:dump_to_textfile("priv/mnesia_prototype_res.txt"),
mnesia:stop(),
When I comment out these lines and start and stop mnesia from the erlang prompt, I am able to stop my application cleanly.
Should I not use these prototype functions within a fully fledged erlang app?
Ken.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
通过使用 systools 创建启动文件 mnesia 在我的应用程序之前启动,并在我的应用程序关闭后停止。这解决了上面 Legoscia 提到的悬挂问题。启动文件的想法是由 erlang Advisory 的 Mazen 提出的。非常感谢他的建议。
By using systools to create a boot file mnesia is started before my app and stops after my app on shutdown. This fixes the hanging problem which is alluded to by legoscia above. The boot file idea was suggested by Mazen from erlang consulting. Many thanks to him for that suggestion.
来自 erlang 文档:
From the erlang docs: