本程序月球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
功能使流程能够获取其控制台的输入缓冲区和活动屏幕缓冲区的句柄,即使STDIN
和STDOUT
已被重定向。要打开控制台输入缓冲区的句柄,请CONIN$
在调用中指定值CreateFile
。CONOUT$
在调用中指定值以CreateFile
打开控制台活动屏幕缓冲区的句柄。CreateFile
使您能够指定它返回的句柄的读/写访问权限。
我不确定所讨论的程序是否确实这样做,但我相信这是有可能的。我不知道如何阻止程序使用,CONOUT$
也不知道这有多容易或多难(如果可能的话)。在 Linux 中setsid
,但我对 Windows 不太了解,无法给你提供类似的解决方案。