为什么“start / w”阻止进程写入stdout和stderr?

时间:2017-08-03 09:34:21

标签: batch-file command-line stdout stderr

我正在从命令行运行可执行文件,同时将stdoutstderr重定向到文件:

MyApp.exe 1>out.txt 2>err.txt

立即创建文件,并在MyApp.exe的过程完成时更新。

但是,我不知道进程何时实际完成,因为命令行提示在执行命令后立即可用。

因此,我想积极等待该过程的完成:

start/w MyApp.exe 1>out.txt 2>err.txt

这确实达到了等待完成的目的。

但是,out.txterr.txt文件永远不会更新(即它们保持为空)。

有人可以解释一下我做错了什么,我该如何解决?

谢谢。

更新

我能够通过从批处理文件而不是命令行运行原始命令(不包括start /w前缀)来解决问题。我仍然想知道这个问题的原因。

1 个答案:

答案 0 :(得分:1)

这是因为您正在重定向for (unsigned i=0; i<n; ++i) { // We cannot insert duplicates in a set so why check anyway _originIdSet.insert(xIds[i]); _originIdSet.insert(yIds[i]); } 的STDOUT和STDERR(两者都是空的)而不是应用程序的输出。您需要在一级解析中“保存”重定向(通过转义重定向符号):

start