使用手动分配的控制台在CMD.EXE中混淆输出

时间:2018-05-11 19:43:17

标签: windows user-interface cmd windows-console

我感到沮丧。我有一个手动打开控制台的Windows GUI应用程序。调用AllocConsole和{重定向{1}},stdinstdout所有的工作完美无缺。我可以输入任何输入和任何输出,它运作良好。问题是当我调用stderr来运行CMD命令时,输出是垃圾。人物混杂在一起。 CMD无法与控制台无缝集成。

我将输出重定向到控制台,如下所示:

_wsystem

我为每个句柄都这样做。

1 个答案:

答案 0 :(得分:1)

将打开模式从“w”更改为“r +”。为了与控制台API完全兼容,应使用读写访问权限打开控制台文件,这是在进程分配控制台时默认打开它们的方式。例如,C运行时通过调用isatty来检测GetConsoleMode的控制台句柄,这需要具有读访问权限的句柄。如果仅使用写访问权打开“CONOUT $”,则会失败。