在文档中有关于标准stdin, stdout和stderr之外的其他流的信息。(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
进程也不会从父进程继承自定义流)