21xrx.com
2024-12-22 16:34:23 Sunday
登录
文章检索 我的文章 写文章
如何用C++执行命令行并获取结果
2023-07-14 21:56:50 深夜i     --     --
C++ 命令行 执行 获取结果

在C++编程中,我们难免会遇到需要执行命令行并获取结果的场景,比如需要读取系统信息、执行系统命令、调用外部程序等。本文将介绍如何用C++实现这一功能。

一、利用system函数执行命令

C++中的system函数能够执行命令行,并返回执行结果。其函数原型如下:


int system(const char* command);

其中command参数为需要执行的命令字符串。例如:


int result = system("ipconfig");

这行代码的作用是执行ipconfig命令,返回执行结果的状态码。如果命令执行成功,返回值为0;如果出现错误,则返回非零值。

二、利用popen函数执行命令并获取结果

system函数虽然简单易用,但是其返回值只告诉我们命令是否成功执行,无法获取命令的具体输出结果。所以,我们可以借助popen函数来实现在C++中执行命令并获取输出结果。

popen函数的函数原型如下:


FILE *popen(const char *command, const char *mode);

其中command参数为需要执行的命令字符串,mode参数为打开文件的模式("r"表示读取,"w"表示写入)。执行成功后,popen函数会返回一个指向FILE对象的指针,我们可以通过这个指针来读取命令执行的输出结果。

例如,以下示例代码可以执行ls命令,并将输出结果打印到控制台:


#include <iostream>

#include <cstdio>

using namespace std;

int main()

{

  FILE *pipe = popen("ls", "r");

  if (pipe == NULL)

  

    cout << "执行命令失败!" << endl;

    return 1;

  

  char buffer[1024];

  while (!feof(pipe))

  {

    if (fgets(buffer, 1024, pipe))

    

      cout << buffer;

    

  }

  pclose(pipe);

  return 0;

}

三、通过重定向方式执行命令并获取结果

在C++中,我们还可以通过重定向方式执行命令并获取结果。具体方法是将标准输出流重定向到一个文件中,然后读取该文件的内容。以下是示例代码:


#include <iostream>

#include <cstdio>

using namespace std;

int main()

{

  char buffer[1024];

  FILE* pipe = _popen("dir", "r");

  FILE* output = fopen("output.txt", "w");

  while (fgets(buffer, 1024, pipe))

  {

   fputs(buffer, output);

  }

  _pclose(pipe);

  fclose(output);

  return 0;

}

以上就是在C++中实现执行命令行并获取结果的三种方法。需要执行命令的时候可以根据具体的需求选择适合的方法。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复