Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

จะรันคำสั่งและรับผลลัพธ์ของคำสั่งภายใน C ++ โดยใช้ POSIX ได้อย่างไร


คุณสามารถใช้ฟังก์ชัน 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 = "";

   // 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;
}

ผลลัพธ์

สิ่งนี้จะให้ผลลัพธ์ -

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