如何在Windows控制台中将数据输出到自定义流(3>4>等)?



在文档中有关于标准stdinstdoutstderr之外的其他流的信息。(http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/redirection.mspx?mfr=true)

UNDEFINED 3-9 - These handles are defined individually by the application and are specific to each tool.

所以我想要完成的是创建自己的输出流,比如在槽3上,并将其用于调试。(我看到系统没有提供stddbg流)

所以我的问题是-是否有可能检查非标准输出流正在等待数据,就像我用stderr做的那样:

isatty(fileno(stderr)) == 0

然后我可以选择一种不同的错误信息格式更友好的日志文件。当以这种方式使用command时,上面的代码是正确的:

myApp.exe param1 param2 2> error.log

,但是当我需要区分调试(或性能)和错误消息时,很容易使用另一个流,如:

myApp.exe param1 param2 3> debug.log

但是我如何检查这个流是否连接到应用程序,我应该使用什么名称作为fileno()函数的参数?

句柄3-9似乎只是额外的临时句柄玩命令行,例如缓冲一些输入/输出。查找一些dos shell法师的答案,例如这个或这个,以了解如何使用它。

遗憾的是,自定义流只存在于cmd.exe的特定实例中,而不传递给子进程。(即使子cmd.exe进程也不会从父进程继承自定义流)

相关内容

  • 没有找到相关文章

最新更新