24

我想这个问题说明了一切,但是,如果有人关闭了 C++ 控制台应用程序会发生什么?如,单击右上角的“x”。它会立即关闭吗?它会引发某种异常吗?它是未定义的行为吗?

4

4 回答 4

21

如果您使用SetConsoleCtrlHandler函数设置控制处理程序,则使用右上角的“x”关闭 c++ 控制台应用程序会引发CTRL_CLOSE_EVENT您可以捕获和处理的问题。在那里,您可以覆盖关闭功能并执行您想做的任何事情,然后仍然可以选择执行默认行为。

于 2009-03-30T06:11:40.987 回答
9

我想控制台进程只是被操作系统毫不客气地杀死了。如果您想捕获此事件并执行某些操作,看起来SetConsoleCtrlHandler函数就是执行此操作的方法。

也可以看看:

于 2009-03-30T06:08:04.097 回答
9

在 Linux 和其他 Unix 系统上,控制台作为单独的进程运行。当您关闭 shell 时,它会向当前活动的进程或未在后台执行的进程发送 SIGHUP 信号。如果程序员不处理它,则该过程简单地终止。如果您关闭与终端和活动进程的 SSH 会话,则会发送相同的信号。

于 2009-03-30T06:09:00.180 回答
8

SIGBREAK在 Windows 上引发。

于 2014-12-15T13:12:44.983 回答