背景信息:我正在开发Windows 10应用。在我的应用程序中,一些输出显示在需要新过程的窗口控制台上。
代码段:
PROCESS_INFORMATION pi;
STARTUPINFO si;
// CreateProcess is defined in processthreadsapi.h
BOOL newProcess = CreateProcess (
0, pszCmdLine, 0, 0, FALSE, DEBUG_THIS_ONLY_PROCESS, 0, 0, &si, &pi
);
在上面的代码段中,pszCmdLine
可以是"cmd.exe /c dir"
,"cmd.exe /c ipconfig"
或基本上是任何Windows终端cmd。
问题:在前端,将生成一个新的cmd
控制台,用户可以终止该控制台。但是,它一直在后台运行。我在下面附加了片段:
积累过程之前:
在上面的片段中,它显示"cmd.exe /c dir"
正在执行并输出到cmd控制台中。
过程累积后:
在上面的代码片段中,它显示了我如何启动相同的cmd
4次并关闭3次(即,计数器为“(4)”,包括主进程)。
现实世界中的问题:这实际上是在消耗内存,并具有降低性能的能力。
初始好奇心::当用户单击“ x”时,Windows操作系统是否应处理该过程的终止?
以前有人遇到过类似的问题吗?
答案 0 :(得分:0)
解决方案:
将DEBUG_ONLY_THIS_PROCESS
更改为0
或 CREATE_NEW_CONSOLE
。
我的想法:
我认为DEBUG_ONLY_THIS_PROCESS
背后的想法是让窗口句柄保持打开状态,以便用户观察输出,而CREATE_NEW_CONSOLE
则根据需要分配并释放内存。