如何使用POSIX在C ++中执行命令并获取命令输出?

您可以使用popen和pclose函数与进程进行管道传输。该popen()函数通过创建管道,派生和调用外壳程序来打开进程。我们可以使用缓冲区读取stdout的内容,并将其附加到结果字符串中,并在进程退出时返回此字符串。

示例

#include <iostream>

#include <stdexcept>

#include <stdio.h>

#include <string>

using namespace std;

string exec(string command) {

   char buffer[128];

   string result = "";

   //打开管道文件

   FILE* pipe = popen(command.c_str(), "r");

   if (!pipe) {

      return "popen失败了!";

   }

   //读到过程结束:

   while (!feof(pipe)) {

      //使用缓冲区读取并添加到结果

      if (fgets(buffer, 128, pipe) != NULL)

         result += buffer;

   }

   pclose(pipe);

   return result;

}

int main() {

   string ls = exec("ls");

   cout << ls;

}

输出结果

这将给出输出-

a.out

hello.cpp

hello.py

hello.o

hydeout

my_file.txt

watch.py

以上是 如何使用POSIX在C ++中执行命令并获取命令输出? 的全部内容, 来源链接: utcz.com/z/341133.html

回到顶部