我正在从命令行运行可执行文件,同时将stdout
和stderr
重定向到文件:
MyApp.exe 1>out.txt 2>err.txt
立即创建文件,并在MyApp.exe
的过程完成时更新。
但是,我不知道进程何时实际完成,因为命令行提示在执行命令后立即可用。
因此,我想积极等待该过程的完成:
start/w MyApp.exe 1>out.txt 2>err.txt
这确实达到了等待完成的目的。
但是,out.txt
和err.txt
文件永远不会更新(即它们保持为空)。
有人可以解释一下我做错了什么,我该如何解决?
谢谢。
更新
我能够通过从批处理文件而不是命令行运行原始命令(不包括start /w
前缀)来解决问题。我仍然想知道这个问题的原因。
答案 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