「文字列」を外部プログラムに渡してフィードバックを得る C++ コードを書くのに苦労しています。
たとえば、c++ コードを gcc に渡し、エラー メッセージを元のコードに戻したいとします。
それをC++で書く方法
それには2つの方法があります。外部プログラムから出力を読み取りたいだけの場合の簡単な方法は、次を使用することpopen
です。
FILE* fp = popen("/some/command argument1 argument2", "r");
char input[256];
while (fgets(input, sizeof(input), fp))
{
std::cout << "Got input from command: " << input;
}
もう 1 つのより複雑な方法 (およびpopen
舞台裏での動作) は、新しい無名パイプ ( を使用pipe
)、新しいプロセス ( を使用fork
) を作成し、パイプを使用するように新しいプロセスの標準出力を設定してからexec
、子プロセス。次に、パイプの読み取り側からプログラムからの出力を読み取ることができます。これはより柔軟で、推奨される方法です (セットアップはより複雑ですが)。また、双方向通信、つまり外部プログラムの標準入力に書き込み、その出力から読み取ることができるようにしたい場合にも、これが唯一の方法です。