当mnesia从程序中停止时,停止Erlang app会挂起

Ken*_*son 5 erlang mnesia

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

我现在正在我的erlang应用程序中进行mnesia原型设计.

在我的jaus_app.erl文件中,start()调用:

{atomic, ok} = mnesia:load_textfile("priv/mnesia_prototype.txt")
Run Code Online (Sandbox Code Playgroud)

我的stop()函数调用:

mnesia:dump_to_textfile("priv/mnesia_prototype_res.txt"),
mnesia:stop(),
Run Code Online (Sandbox Code Playgroud)

当我注释掉这些行并从erlang提示符启动和停止mnesia时,我能够干净地停止我的应用程序.

我不应该在完全成熟的erlang应用程序中使用这些原型函数吗?

肯.

Ken*_*son 2

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