【MFC】如何设置让exe的控制台不会跟着exe退出而退出

在 Windows 下,MFC 程序(如 echo.exe)如果用 AllocConsole 创建了控制台窗口,默认情况下 ,当主程序(exe)退出时,控制台窗口也会自动关闭。这是操作系统的行为,不能直接阻止。

常见做法

1. 让主程序延迟退出

在主窗口关闭前,阻塞主线程(如 getchar()system("pause")、弹窗等),让用户有机会看到控制台内容。例如:

cpp 复制代码
void CechoDlg::OnDestroy()
{
    // ... 你的清理代码 ...
    std::cout << "按任意键关闭控制台..." << std::endl;
    getchar(); // 等待用户输入
    CDialogEx::OnDestroy();
}
2. 用外部命令行启动 exe

在命令行(cmd)中手动运行 echo.exe,这样即使程序退出,cmd 窗口不会自动关闭。

3. 写日志到文件

如果只是想保留调试信息,建议将日志输出到文件,而不是依赖控制台窗口。

4. 用 DebugView 或 plog 等日志库

用日志库输出到文件或调试窗口,便于分析。


结论

  • 控制台窗口和 exe 生命周期绑定,exe 退出时控制台必然关闭。
  • 最佳实践 :在程序退出前用 getchar() 或弹窗等方式阻塞,或直接用日志文件保存调试信息。

相关推荐
xiaoye-duck2 分钟前
C++入门基础指南:引用全解析(从入门到精通)
c++
XFF不秃头11 分钟前
力扣刷题笔记-下一个排列
c++·笔记·算法·leetcode
天赐学c语言23 分钟前
12.16 - 全排列 && C语言中声明和定义的区别
c++·算法·leecode
zmzb010334 分钟前
C++课后习题训练记录Day50
开发语言·c++
HalvmånEver1 小时前
Linux:基础IO(终)
linux·运维·c++·学习·缓冲区·libc
laocooon5238578861 小时前
背包问题~~!C++
开发语言·c++·算法
矢鱼1 小时前
python中对应c++容器的结构
开发语言·c++·python·算法
qq_310658511 小时前
mediasoup源码走读(十一)——consumer
服务器·c++·音视频
埃伊蟹黄面1 小时前
字符串算法精要与例题汇编
c++·算法·leetcode·字符串
..过云雨2 小时前
15-2.【Linux系统编程】进程信号 - 信号保存(信号处理流程的三种状态:未决、阻塞、递达,信号保存由未决表完成、sigset_t信号集类型及相关函数)
linux·c++·后端·信号处理