C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

コマンドを実行し、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 = "";

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

  1. C ++を使用してOpenCVの現在のフレームの位置を取得するにはどうすればよいですか?

    現在のフレームは、ビデオを再生していることを意味し、現在表示されているフレームが現在のフレームです。アクティブフレームとも呼ばれます。多くのアプリケーションでは、現在のフレームの番号を取得するように要求できます。 次のプログラムは、現在のフレームの位置を読み取り、コンソールウィンドウに表示します。 例 #include<opencv2/opencv.hpp>//OpenCV header to use VideoCapture class// #include<iostream> using namespace std; using namespace cv; int

  2. C ++を使用してOpenCVの特定のピクセルの値を取得するにはどうすればよいですか?

    特定のピクセルの値を読み取るには、「at」または「directaccess」メソッドのいずれかを使用できます。ここでは、両方のアプローチについて学習します。 atメソッドから始めましょう。次のプログラムは、RGB画像の(10、29)にあるピクセル値を読み取ります。 例 #include<iostream> #include<opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; int main() {    Mat image;//taking an image