Computer >> Máy Tính >  >> Lập trình >> C ++

Làm thế nào để thực thi một lệnh và nhận đầu ra của lệnh trong C ++ bằng cách sử dụng POSIX?


Bạn có thể sử dụng các hàm popen và pclose để chuyển đến và đi các quá trình. Hàm popen () mở ra một quy trình bằng cách tạo một đường ống, phân nhánh và gọi trình bao. Chúng ta có thể sử dụng một bộ đệm để đọc nội dung của stdout và tiếp tục thêm nó vào một chuỗi kết quả và trả về chuỗi này khi các quá trình thoát.

ví dụ

#include <iostream>
#include <stdexcept>
#include <stdio.h>
#include <string>

using namespace std;

string exec(string command) {
   char buffer[128];
   string result = "";

   // Open pipe to file
   FILE* pipe = popen(command.c_str(), "r");
   if (!pipe) {
      return "popen failed!";
   }

   // read till end of process:
   while (!feof(pipe)) {

      // use buffer to read and add to result
      if (fgets(buffer, 128, pipe) != NULL)
         result += buffer;
   }

   pclose(pipe);
   return result;
}

int main() {
   string ls = exec("ls");
   cout << ls;
}

Đầu ra

Điều này sẽ cung cấp đầu ra -

a.out
hello.cpp
hello.py
hello.o
hydeout
my_file.txt
watch.py