C++ 在C+;中查看system()调用的输出+;

C++ 在C+;中查看system()调用的输出+;,c++,windows,command-line,cmd,system,C++,Windows,Command Line,Cmd,System,如何查看系统命令的输出。例: 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; } 当我在VisualStudio中运行程序时,它会给我一个黑屏,我看不到正在运行的命令。我需要它,以便查看它是否有效。谢谢

如何查看系统命令的输出。例:

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;

}

当我在VisualStudio中运行程序时,它会给我一个黑屏,我看不到正在运行的命令。我需要它,以便查看它是否有效。谢谢

系统调用的输出应该显示在stdout上

我认为,如果这些命令成功,通常不会显示任何输出。尝试在之后添加一个dir或pwd以列出您所在的目录


如果要将命令的输出输入到程序中进行处理,这是另一个问题。您必须使用特定于操作系统的api,或者可能将输出重定向到您可以读取的文件中。

使用
popen
而不是
system
。参见这里的示例

然后


尝试如下添加
暂停
,以在每个命令后等待。失败时,将显示错误消息。成功后,将显示命令的实际输出(如果有)

system("set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin & pause");
system("cd C:/thisfolder/ & pause");
请注意,每次调用
system
都使用cmd.exe(作为
cmd/c[command]
)来执行命令,并且一个命令中的
PATH
等环境变量不会影响另一个命令

cmd.exe /c set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin 
cmd.exe /c cd C:/thisfolder/

可能是输出重定向问题。
system()
函数使用命令解释器运行
system()
函数的参数字符串,因此命令解释器可能没有继承您的标准输出,因此命令的输出不会进入控制台窗口。另一件事可能是您正在使用的命令没有生成任何输出。尝试另一个命令,例如
echo
命令,这样做类似于
system(“echo this is output”)
。我不确定
设置
-ing(或
cd
)和一次调用
system
会影响下一次调用
system
(在POSIX和Linux上,我肯定它不起作用。但我不知道Windows)您是否考虑使用一些OS API(例如…)而不是调用<代码>系统< /代码>?或者使用一些框架,比如,或者Boost。@基本上,你是对的。由于set命令在命令解释器退出后在命令解释器中运行,因此对环境变量的任何更改也将消失,因为每个进程都有自己的副本。同样的情况也适用于目录更改的cd命令。请注意,您使用的命令不会对后续执行产生任何影响(或根本不会产生任何影响)-在system()函数返回后,它们的预期效果将消失。我将“system”反引,因为a与
system
库函数非常不同
system("set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin & pause");
system("cd C:/thisfolder/ & pause");
cmd.exe /c set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin 
cmd.exe /c cd C:/thisfolder/