[C++] 69 ファイル検索アプリ : 標準出力の取得 popen関数

[M1 Mac, Big Sur 11.6.7, clang 13.0.0, NO IDE]

ファイル検索アプリの検索結果を標準出力から取得し、Fl_Multiline_Outputに表示させました。

標準出力をわざわざ取得しようとする方はあまり多くないようで、調査に少々手間取りました。最初はGCC限定の方法をそれと気づかず試したために寄り道してしまいました。

これでメインのGUIとコンソールを一体化させることができました。

あとはスクロールバーを配置して、新機能を追加します。

ここ1週間ほどゲームプログラミングの学習で疲弊していましたが、やはり受け身の勉強よりも作りたいものを好きなように作る方が断然楽しいですね。

他人様の書いたコードを読解して手を入れるのは、例えNO IDE環境でもつらいものがあります。ビルドが異様に遅くてストレスフルなIDE環境でしたら早々に離脱しているでしょう。

#include <cstdio>
#include <cstdlib>
#include <iostream>

stringstream cmd;

const char* grep_char = grep_input->value();
cmd << "grep -rI --ignore-case " << string(grep_char) << " " << string(dir_char);
std::cout << cmd.str() << endl;

FILE* fp = popen((cmd.str()).c_str(), "r");

char buffer[1024];
while (fgets(buffer, sizeof(buffer), fp) != NULL) {
       output_line->insert(buffer);
       std::cout << buffer;
}
pclose(fp);