这个 Windows 程序如何忽略我的输出重定向?

这个 Windows 程序如何忽略我的输出重定向?

本程序月球IPS(创建二进制补丁文件)似乎忽略了我的重定向到 null。我正在调用:

"Lunar IPS" -CreateIPS output.ips input1.txt input2.txt > nul 2>&1

无论如何,它都会给我大量的输出:

Original file: \input1.txt
Modified file: \input2.txt
Patch Creation Complete! : The IPS patch was successfully created!

我想知道如何自己做到这一点,或者(最好)如何防止该程序忽略我的重定向。

请注意,与其他类似问题相比,这个问题实际上尝试重定向 stdout 和 stderr。

答案1

如果是在 *nix 中,那么它会像这个问题:ssh当 stdout 和 stderr 都被重定向时,如何/为什么输出到 tty?答案是:它使用/dev/tty

据我所知,Windows 上的“等价物”是CONIN$/CONOUT$[强调我的]:

CreateFile功能使流程能够获取其控制台的输入缓冲区和活动屏幕缓冲区的句柄,即使STDINSTDOUT已被重定向。要打开控制台输入缓冲区的句柄,请CONIN$在调用中指定值CreateFileCONOUT$在调用中指定值以CreateFile打开控制台活动屏幕缓冲区的句柄。CreateFile使您能够指定它返回的句柄的读/写访问权限。

我不确定所讨论的程序是否确实这样做,但我相信这是有可能的。我不知道如何阻止程序使用,CONOUT$也不知道这有多容易或多难(如果可能的话)。在 Linux 中setsid,但我对 Windows 不太了解,无法给你提供类似的解决方案。

相关内容