gpt4 book ai didi

c++ - 我的代码从另一个进程附加和使用控制台有什么问题?

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:17 25 4
gpt4 key购买 nike

我有服务器进程,它分配控制台并将输出和输入重定向到该控制台。使用 ShellExecute 这个服务器进程产生一些客户端,这些客户端知道服务器 ProcessID。所以,我在下一个类尝试 AttachConsole:

Console::Console(DWORD dwProcessId)
{
if (dwProcessId) {
AttachConsole(dwProcessId);
}
else
AllocConsole();

CONSOLE_SCREEN_BUFFER_INFO coninfo;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &coninfo);
coninfo.dwSize.Y = 500;
SetConsoleScreenBufferSize(GetStdHandle(STD_OUTPUT_HANDLE), coninfo.dwSize);

int hConHandle;
long lStdHandle;
lStdHandle = (long)GetStdHandle(STD_OUTPUT_HANDLE);
hConHandle = _open_osfhandle(lStdHandle, _O_TEXT);
FILE *fp = _fdopen( hConHandle, "w" );
*stdout = *fp;
setvbuf( stdout, NULL, _IONBF, 0 );

std::ios::sync_with_stdio();
}

Console::~Console()
{
FreeConsole();
}

但它不起作用,它甚至删除服务器进程到控制台的输出。嗯.. 可能只有一个进程可以输出到控制台。是否可以从多个进程向控制台发送输出?

最佳答案

您应该使用 CreateFile 打开 CONOUT$。附加到控制台不会更改您的进程继承的标准句柄。

关于c++ - 我的代码从另一个进程附加和使用控制台有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7110560/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com