【问题标题】:Call function right before termination c++ [duplicate]在终止c ++之前调用函数[重复]
【发布时间】:2014-02-19 16:08:33
【问题描述】:

有没有办法在非面向对象的控制台应用程序(简单的主程序)的终止(单击控制台的红色 X)处调用函数?

也许是捕捉到红色 X 的消息然后处理它......

谢谢!

【问题讨论】:

  • 点击控制台的X并不一定意味着退出。请具体说明您做了什么,您面临的问题是什么,而不是含糊其辞。
  • 你为什么不描述你的问题而不是你想到的解决方案......
  • signal() 可能会起作用,但不会阻止它关闭。这取决于关闭控制台得到什么信号。
  • 使用带有析构函数的静态变量似乎是显而易见的解决方案,但由于问题不是很干净,所以很难说。
  • 如果 X 不是红色怎么办?

标签: c++ windows console-application termination


【解决方案1】:

您可以尝试使用 atexit():

http://www.cplusplus.com/reference/cstdlib/atexit/

或者可能是全局对象的析构函数。

【讨论】:

    【解决方案2】:

    当您在 Windows 上并且在普通控制台窗口中运行控制台应用程序时,然后单击关闭按钮 ([X]),这将生成一个 CTRL_CLOSE_EVENT

    您可以通过安装带有SetConsoleCtrlHandler Win32 API 函数的控制台事件处理程序来处理这些问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      • 2018-10-12
      • 2012-12-06
      • 1970-01-01
      • 2012-06-09
      • 1970-01-01
      • 2023-03-28
      相关资源
      最近更新 更多