C:启动命令窗口并在Windows下输出到它

C:启动命令窗口并在Windows下输出到它,c,windows,C,Windows,我有一个多线程程序,用MinGW在Windows上用C编写。主线程等待用户输入,而第二个线程进行计算并向用户输出数据。当我启动线程时,我希望打开一个新窗口,向用户显示计算出的数据(例如c程序可以向其写入输出的命令窗口)。任何帮助都将不胜感激 谢谢 ******编辑********* 我想出了以下代码: main创建一个新线程,然后在该线程启动的函数中: AllocConsole( ); AttachConsole( GetCurrentProcessId() ); freopen("CON",

我有一个多线程程序,用MinGW在Windows上用C编写。主线程等待用户输入,而第二个线程进行计算并向用户输出数据。当我启动线程时,我希望打开一个新窗口,向用户显示计算出的数据(例如c程序可以向其写入输出的命令窗口)。任何帮助都将不胜感激

谢谢

******编辑********* 我想出了以下代码: main创建一个新线程,然后在该线程启动的函数中:

AllocConsole( );
AttachConsole( GetCurrentProcessId() );
freopen("CON", "w", stdout);
但是,新控制台不会打开,当我使用WriteConsole写入控制台时,输出会发送到打开的初始控制台。AllocConsole和AttachConsole都失败,错误为“拒绝访问”。我相信这意味着调用进程(线程)已经有了一个控制台。线程不是它自己的“进程”吗


有没有办法将初始控制台连接到父进程,而不将其传输到子进程?

+1用于使用MinGW而不是VS。。你应该能够用这个参考页面和一点(更多)谷歌搜索来拼凑一些东西。MSDN-控制台功能:我真的不明白这个问题。。。难道一个控制台窗口读取stdin和stdout还不够吗。。。?另外@enhzflep无论对战是好是坏,这里都不是霍利瓦尔人的地方。@Zupoman-完全正确。这正是我没有对两者进行比较的原因。各有所长。至于有关控制台窗口数量的问题,可能该程序有一个gui,OP不知道您可以(a)在构建选项中设置一个标志,创建一个也显示该窗口的程序,或者(b)使用十六进制编辑器更改exe文件头中的一个字节(子系统)耸肩:输出将连续输出到屏幕。在任何时候,用户都可以在任何时候向标准输入一个命令。用户执行此操作时,输出不会暂停,因此我希望输出和输入在两个单独的窗口中。在编辑部分,您将讨论线程,然后讨论进程。进程和线程是不同的东西。但是您可以尝试启动第二个进程,打开另一个控制台窗口,然后这两个进程可以使用某种IPC机制进行通信,可能是一个命名管道。