【问题标题】:Erlang wxWidgets app - Closing the beam.smp file once app finishedErlang wxWidgets 应用程序 - 应用程序完成后关闭 beam.smp 文件
【发布时间】:2020-09-27 08:55:17
【问题描述】:

有一个奇怪的问题,我无法在网上找到答案,所以我在这里试试运气。 我有一个使用 wxWidgets 的普通 erlang 应用程序,一旦我尝试关闭我的应用程序,我得到 wxServer 确实进入了连接到窗口关闭的事件的事件,我收到一条消息,它正在退出,我的窗口确实关闭了,但是如下图所示,我的工具栏上的 beam.smp 根本没有关闭,我必须手动强制关闭将 SIGTERM 发送到 erlang 终端的 beam.smp 文件这也会关闭我的 erlang VM(稍后我必须重新启动它)。

长话短说,我在关闭窗口事件中遗漏了什么,以便一切都很好地关闭而不会导致我的 erlang VM 崩溃?我能够读到 wxWidgets 在 macOS 上的行为不同,但我无法找到正确关闭应用程序的方法。

handle_event(#wx{event = #wxClose{}},State = #state{frame = Frame,panel = Panel}) ->
  io:format("Exiting~n"),
  wxFrame:close(Frame),
  wxFrame:destroy(Frame),
  wx:destroy(),
  {stop,normal,State};

【问题讨论】:

  • FWIW,所有 OTP WxWidget 应用程序也会发生这种情况。例如,尝试在你的 shell 中运行observer:start().,然后关闭观察者。您只能通过终止节点来摆脱“Erlang”(操作系统应用程序)。

标签: macos erlang wxwidgets


【解决方案1】:

您可以使用init:stop/0,1从代码中关闭模拟器

此外,如果您的应用程序以permanent 启动,则终止该应用程序就足够了。检查erlang:application中的行为

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多