5

我遇到了一个问题,我无法在我的程序中停止 mnesia 而不会导致应用程序挂起。

我目前正在我的 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 应用程序中使用这些原型函数吗?

肯。

4

2 回答 2

2

通过使用 systools 创建启动文件,mnesia 在我的应用程序之前启动,并在我的应用程序关闭后停止。这解决了上面 legoscia 提到的悬挂问题。启动文件的想法是由 erlang 咨询公司的 Mazen 提出的。非常感谢他的建议。

于 2010-08-19T14:35:10.580 回答
1

来自 erlang 文档:

dump_to_textfile(Filename):将 mnesia 系统的所有本地表转储到一个文本文件中,然后可以编辑该文本文件(通过普通文本编辑器),然后用 mnesia:load_textfile/1 重新加载。仅将此功能用于教育目的。使用其他功能来处理真实的备份。

于 2010-08-13T14:02:55.137 回答