【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() 或弹窗等方式阻塞,或直接用日志文件保存调试信息。

相关推荐
cpp_25019 分钟前
P1910 L 国的战斗之间谍
数据结构·c++·算法·题解·洛谷·背包dp
txzrxz11 分钟前
c++深度搜索讲解及例题
开发语言·c++·深度搜索·例题讲解
|_⊙14 分钟前
红黑树 (C++)
开发语言·c++·学习
楼田莉子17 分钟前
同步/异步日志系统:工具类以及日志的简单模块
linux·服务器·数据结构·c++
王老师青少年编程17 分钟前
动态规划之【树形DP】第4课:树形DP应用案例实践3
c++·动态规划·dp·树形dp·csp·信奥赛·提高组
七点半77040 分钟前
FFmpeg C++ AI视觉开发核心手册 (整合版)适用场景:视频流接入、AI模型预处理(抽帧/缩放/格式转换)、高性能算法集成。
c++·人工智能·ffmpeg
A.A呐1 小时前
【C++第二十八章】单例模式
c++·单例模式
玖釉-1 小时前
C++ 硬核剖析:if 语句中的“双竖杠” || 到底怎么运行的?
开发语言·c++
m0_716765231 小时前
数据结构三要素、时间复杂度计算详解
开发语言·数据结构·c++·经验分享·笔记·算法·visual studio
And_Ii1 小时前
3740. 三个相等元素之间的最小距离 I
c++·算法