我希望程序能够重定向两者的输入和输出 父母和子女的过程。例如,
GKMatch
家长打电话给孩子。子输出到child_output,父输出到父输出。
以下示例代码应该可以使用,但不是。为方便起见,我在字符串" ToBeRun"中对孩子的重定向操作符进行硬编码,而不是将其作为参数传递,就像在主程序中一样。
如果在命令行中没有将参数传递给父级,则子输出会正确地重定向到child_output.txt。但是,如果您在命令行上重定向父查询,请调用parent.exe> parent_output.txt,父输出未重定向。 parent_output.txt已创建,但在程序完成时为空。
parent "child.exe > child_output.txt" > parent_output.txt
答案 0 :(得分:1)
我回答了我自己的问题:简单地说,WriteConsole()在写入重定向文件时失败。
因此,在写入重定向文件时,需要使用名称恰当的WriteFile()。
WriteFile()适用于重定向输出和常规控制台输出,因为Harry Johnston已经有用地指出,所以你可以在两种情况下使用它。这就是我所做的。
或者,尤其是如果您正在使用Unicode,您可以通过调用GetConsoleMode获取MSDN's advice并检查HANDLE是文件句柄还是控制台句柄。如果GetConsoleMode返回0,则它不是控制台。
你为什么要这样做?与WriteFile不同,WriteConsole是一个可以成为unicode或ASCII函数的宏,具体取决于是否定义了UNICODE。
ReadFile和WriteFile函数,或ReadConsole和WriteConsole 函数,使应用程序能够读取控制台输入和写入控制台 输出为字符流。 ReadConsole和WriteConsole表现得很好 与ReadFile和WriteFile完全相同,只是它们可以用作 宽字符函数(其中文本参数必须使用Unicode)或as ANSI函数(其中文本参数必须使用>中的字符; Windows字符集)。需要维护单组的应用程序 应该使用支持Unicode或ANSI字符集的源 ReadConsole和WriteConsole。