我感到沮丧。我有一个手动打开控制台的Windows GUI应用程序。调用AllocConsole
和{重定向{1}},stdin
和stdout
所有的工作完美无缺。我可以输入任何输入和任何输出,它运作良好。问题是当我调用stderr
来运行CMD命令时,输出是垃圾。人物混杂在一起。 CMD无法与控制台无缝集成。
我将输出重定向到控制台,如下所示:
_wsystem
我为每个句柄都这样做。
答案 0 :(得分:1)
将打开模式从“w”更改为“r +”。为了与控制台API完全兼容,应使用读写访问权限打开控制台文件,这是在进程分配控制台时默认打开它们的方式。例如,C运行时通过调用isatty
来检测GetConsoleMode
的控制台句柄,这需要具有读访问权限的句柄。如果仅使用写访问权打开“CONOUT $”,则会失败。