关闭c ++控制台应用程序时会发生什么

时间:2009-03-30 05:57:06

标签: c++ winapi console-application

我想问题就是这样,但是,如果有人关闭c ++控制台应用程序会发生什么?如上所示,单击顶角的“x”。它会立即关闭吗?它会引发某种异常吗?是不确定的行为?

4 个答案:

答案 0 :(得分:20)

如果使用SetConsoleCtrlHandler函数设置控制处理程序,则关闭顶部角落带有“x”的c ++控制台应用程序会抛出CTRL_CLOSE_EVENT,您可以捕获并处理该{{1}}。在那里你可以覆盖关闭功能并执行你想做的任何事情,然后可选地仍然执行默认行为。

答案 1 :(得分:9)

我认为控制台进程会被操作系统毫不客气地杀死。如果你想要捕获这个事件并做一些事情,看起来SetConsoleCtrlHandler函数是这样做的。

另见:

答案 2 :(得分:9)

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

答案 3 :(得分:8)

在Windows上引发了

SIGBREAK