【发布时间】:2015-03-21 11:51:33
【问题描述】:
如何查看系统命令的输出。例如:
int _tmain(int argc, _TCHAR* argv[]) {
system("set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin");
system("cd C:/thisfolder/");
std::cin.get();
return 0;
}
当我在 Visual Studio 中运行程序时,它给我一个黑屏,我看不到正在运行的命令。我需要它,所以我可以查看它是否有效。谢谢!
【问题讨论】:
-
可能是输出重定向问题。
system()函数使用命令解释器来运行system()函数的参数字符串,因此命令解释器可能没有继承您的标准输出,因此命令的输出不会进入控制台窗口。另一件事可能是您使用的命令没有生成任何输出。尝试不同的命令,例如echo命令,然后执行system("echo this is output")之类的操作。 -
我不确定
set-ing(或cd)与system的一次调用会影响对system的下一次调用(在POSIX 和Linux 上,我敢肯定)不起作用。但我不知道 Windows)。 -
@BasileStarynkevitch 你是对的。由于 set 命令在命令解释器退出后在命令解释器中运行,因此对环境变量的任何更改也将消失,因为每个进程都有自己的副本。同样的事情也适用于目录更改的 cd 命令。
-
请注意,您使用的命令不会对后续执行产生任何影响(或根本没有任何影响)——它们的预期效果会在 system() 函数返回后消失。
标签: c++ windows command-line cmd system