作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Visual Studio 2013 中使用 C++ 控制台应用程序,在 Windows 上工作。
首先,我使用 FreeConsole 分离了控制台,它可以工作;然后,我尝试使用 AttachConsole 将其附加回去,但什么也没发生——
#include <psapi.h>
DWORD winpid = GetCurrentProcessId(); // get pid
std::cout << winpid; // it works
FreeConsole(); // console lost
std::cout << "Lost to the bit bucket"; //nothing happen, as expected
AttachConsole(winpid); // try find the console back....
std::cout << "c"; // ... but failed
如何找回丢失的控制台?
最佳答案
当您调用 FreeConsole() 时,您的控制台将不复存在。您不能调用 AttachConsole(),因为没有可附加的内容。您应该改为使用 AllocConsole() 创建一个新控制台,然后像这样“附加”到它:
AllocConsole();
FILE* f;
freopen_s(&f, "CONOUT$", "w", stdout);
然后稍后释放控制台:
fclose(f);
FreeConsole();
关于c++ - FreeConsole 然后 AttachConsole 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40059618/
我在 Visual Studio 2013 中使用 C++ 控制台应用程序,在 Windows 上工作。 首先,我使用 FreeConsole 分离了控制台,它可以工作;然后,我尝试使用 Attach
在 Windows 8 上,我们遇到了 FreeConsole 问题。它似乎关闭了 stdio 句柄,而不关闭文件流。 这可能是 Windows 8 的问题,也可能是我根本不理解 Windows 控制
我知道 return vs exit() 之间的区别. 我想知道它们与 FreeConsole() 有何不同。 FreeConsole()是一个API函数 (scope: main function)
我是一名优秀的程序员,十分优秀!