在C++中查看系统()调用的输出
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中运行该程序时,它给我一个黑屏,我看不到正在运行的命令。我需要它,以便我可以查看它是否有效。 谢谢!
使用 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 %dn", _pclose( pPipe ) );
system
调用的输出应显示在标准输出上。
我认为如果这些命令成功,通常不会显示任何输出。 尝试在后面添加目录或 pwd 以列出您所在的目录。
如果要将命令的输出导入程序进行处理,那是另一个问题。您必须使用特定于操作系统的 api,或者可能将输出重定向到您可以读取的文件中。
尝试按如下所示添加pause
以等待每个命令。失败时,将显示错误消息。成功后,将显示命令的实际输出(如果有)。
system("set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin & pause");
system("cd C:/thisfolder/ & pause");
请注意,每次调用system
都使用 cmd.exe( 作为 cmd /c [command]
) 来执行您的命令,并且 env 变量(如一个命令中的 PATH
)不会影响另一个命令。
cmd.exe /c set PATH=%PATH%;C:/Program Files (x86)/myFolder/bin
cmd.exe /c cd C:/thisfolder/
相关文章:
- 当使用通配符和null指针调用函数时,对输出的说明
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- 使用静态变量的递归调用的不同输出
- cmake add_custom_command + Xcode:多输出 = 多命令调用
- 调用 cout 时如何在结构中输出常量文本?
- 我的 cout 上有一个奇怪的输出,它把答案放在第一位,然后在我调用它的地方放一个奇怪的输出.我该怎么办?
- 函数调用导致没有输出
- 使用 Node.js N-API 调用 C 函数时,不会显示预期的输出
- 如何调用继承的重载运算符<<并在派生类的输出中添加更多文本?
- 我的动态链接队列在同一输出流中调用时不正确地输出三个返回函数
- 当我从头文件和实现文件调用我的函数到我的主文件时,我没有得到任何输出
- 空指针(为缺少的输出数组调用的 create() 在 create,文件 /home/m/OpenCV/modules/
- 为什么在杂注 omp 关键之后多次调用 printf 会产生乱码输出?
- std::cout 如果从自定义分配器 (Visual Studio 2019) 调用,则不会输出
- 将 Linux system() 调用命令的输出重定向到仅可变的
- QThread 不提供来自调用 shellscript 的输出
- 显示 matlab 程序的输出,调用另一个 C++ 程序
- 输出 = 0 尝试计算标头中的函数并在主程序中调用它们时
- 基于对函数的参数调用流输出运算符的能力重载函数
- 使用读取系统调用C++输出文本