AttachConsole错误5:访问被拒绝

我正在使用Visual Studio 2013中的C ++控制台应用程序,在Windows上工作。

首先我使用FreeConsole分离控制台,它工作; 然后,将AllocConsole作为FreeConsole调用, 然后AttachConsole不工作提示,返回true意味着成功; 最后,我尝试使用AttachConsole将其附加回去,但是没有发生任何事情 –

 #include <psapi.h> DWORD winpid = GetCurrentProcessId(); // get pid std::cout << winpid; // it works FreeConsole(); // console lost bool succeed = AllocConsole(); //succeeded. succeed = AttachConsole(winpid); // return false: failed. if (!succeed) LastError = GetLastError(); // Error Code 5 

系统错误代码5意味着 :

 ERROR_ACCESS_DENIED 5 (0x5) Access is denied. 

我应该如何正确地连接控制台?

在AttachConsole之前删除AllocConsole调用。

从文档 :一个进程可以连接到最多一个控制台。 如果调用进程已经连接到控制台,则返回的错误代码是ERROR_ACCESS_DENIED(5)。