在 C++ 中查看 system() 调用的输出
viewing output of system() call in C++
如何查看系统命令的输出。例如:
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
调用的输出应该显示在标准输出上。
我认为 os 如果命令成功,通常不会显示任何输出。尝试在后面添加 dir 或 pwd 以列出您所在的目录。
如果你想把命令的输出放到程序中进行处理那就是另外一个问题了。您将不得不使用 os 特定的 api,或者将输出重定向到您可以阅读的文件中。
使用 popen
而不是 system
。请参阅此处的示例 https://msdn.microsoft.com/en-us/library/96ayss4b.aspx
char psBuffer[128];
FILE *pPipe;
if( (pPipe = _popen( "set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin", "rt" )) == NULL )
exit( 1 );
然后
while(fgets(psBuffer, 128, pPipe)) {
printf(psBuffer);
}
if (feof( pPipe))
printf( "\nProcess returned %d\n", _pclose( pPipe ) );
尝试如下添加 pause
以在每个命令后等待。失败时,将显示错误消息。成功时,将显示命令的实际输出,if any。
system("set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin & pause");
system("cd C:/thisfolder/ & pause");
请注意 each 对 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/
如何查看系统命令的输出。例如:
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
调用的输出应该显示在标准输出上。
我认为 os 如果命令成功,通常不会显示任何输出。尝试在后面添加 dir 或 pwd 以列出您所在的目录。
如果你想把命令的输出放到程序中进行处理那就是另外一个问题了。您将不得不使用 os 特定的 api,或者将输出重定向到您可以阅读的文件中。
使用 popen
而不是 system
。请参阅此处的示例 https://msdn.microsoft.com/en-us/library/96ayss4b.aspx
char psBuffer[128];
FILE *pPipe;
if( (pPipe = _popen( "set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin", "rt" )) == NULL )
exit( 1 );
然后
while(fgets(psBuffer, 128, pPipe)) {
printf(psBuffer);
}
if (feof( pPipe))
printf( "\nProcess returned %d\n", _pclose( pPipe ) );
尝试如下添加 pause
以在每个命令后等待。失败时,将显示错误消息。成功时,将显示命令的实际输出,if any。
system("set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin & pause");
system("cd C:/thisfolder/ & pause");
请注意 each 对 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/